这不是最容易在标题中解释的内容。
我有一个文件inputfile.txt
,其中包含部分文件名:
file1.abc
filed.def
fileq.lmn
此文件是一个输入文件,我需要使用它来查找实际目录的完整文件名。文件名的末尾因具体情况而异,但其中一部分始终相同。
我想我可以将文件从输入文件grep到所述目录中的ls命令(或ls命令到一个简单的文本文件),然后使用awk输出我想要的完整结果,但我有一些麻烦这样做。
从输入文件file1.abc
中读取 inputfile.txt
它会根据目录内容进行检查。
如果文件存在,则创建基于文件名的特定目录。
(我也在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/
希望这有点清楚。
答案 0 :(得分:0)
首先,您赢得useless use of cat
award
其次,你已经非常好地解释了这个 。如果您无法用简单的英语清楚地描述问题,那么将其转换为脚本或命令集就不足为奇了。
grep -f
是获取目录名称的好方法,但我不明白之后你想用它们做什么。
我现在的问题是使用输出的文件和我要放置文件夹的文件
WUT? “我要放文件夹的那个文件”是什么意思?文件来自哪里?它是inputlist.txt
中命名的文件吗?它是否在匹配的目录中?
如果您只想创建目录,可以执行以下操作:
fgrep -f ./inputfile.txt ./lscommandoutput.txt | xargs mkdir
N.B。您可能需要fgrep
,以便不将输入字符串视为正则表达式,并忽略.
等正则表达式元字符。