这并不是在标题中最容易解释的。
我有一个文件inputfile.txt
,其中包含部分文件名:
file1.abc
filed.def
fileq.lmn
这个文件是一个输入文件,我需要使用它来查找实际目录的完整文件名。文件名的末尾大小写不同,但其中一部分始终相同。
我想我可以将输入文件中的文本grep到所述目录中的ls命令(或ls命令到一个简单的文本文件),然后使用awk输出我想要的全部结果,但我在这方面遇到了一些困难。
从输入文件inputfile.txt
读取file1.abc
它是根据目录内容进行检查的。如果文件存在,则会创建基于文件名的特定目录。
(我也在Busybox环境中。我没有很多东西可以支配)
像这样的。。。
cat lscommandoutput.txt
| awk -F: '{print("mkdir" system("grep $0"); inputfile.txt}'
| /bin/sh
谢谢。
编辑:我很抱歉对此不清楚。输出应该是lscommandoutput.txt中每一行的完整文件名,使用inputfile.txt来grep这些特定行。
如果inputfile.txt包含:
file1.abc
filed.def
fileq.lmn
lscommandoutput.txt包含:
file0.oba.ca-1.fil
file1.abc.de-1.fil
filed.def.com-2.fil
fileh.jkl.open-1.fil
fileq.lmn.he-2.fil
inputfile.txt中未包含的额外行将被忽略。inputfile.txt中的那些文件有一个为它们创建的目录,其名称从lscommandoutput.txt中得到。
/dir/dir2/file1.abc.de-1.fil/ <-- directory in which files can be placed in
/dir/dir2/filed.def.com-2.fil/
/dir/dir2/fileq.lmn.he-2.fil/
希望这能更清楚一点。
首先,您获得了一个无用的cat
奖励
其次,您对这个的解释非常糟糕。如果你不能用通俗易懂的英语清楚地描述这个问题,那么把它变成一个脚本或一组命令也就不足为奇了。
grep -f
是获取目录名的好方法,但我不明白以后要对它们做什么。
我现在的问题是使用输出的文件和我想放文件夹的一个文件
Wut?"我想放文件夹的一个文件"是什么意思?文件从哪里来?是inputlist.txt
中命名的文件吗?它在它匹配的目录中吗?
如果你只想创建目录,你可以做:
fgrep -f ./inputfile.txt ./lscommandoutput.txt | xargs mkdir
注意:您可能想要fgrep
,这样输入字符串就不会被视为正则表达式,并且会忽略像.
这样的regex元字符。