将文本文件中的部分文件名与目录中的文件名进行比较(grep+awk)



这并不是在标题中最容易解释的。

我有一个文件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元字符。

相关内容

  • 没有找到相关文章

最新更新