0

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

我有一个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/

希望这更清楚一点。

4

1 回答 1

0

一、你赢了无用的cat奖励

其次,您对此的解释非常糟糕。如果您不能用简单的英语清楚地描述问题,那么您在将其转换为脚本或命令集时遇到困难也就不足为奇了。

grep -f是获取目录名称的好方法,但我不明白你想用它们做什么。

我现在的问题是将输出文件与我要放置文件夹的一个文件一起使用

呜?“我要放置文件夹的一个文件”是什么意思?文件来自哪里?它是在 中命名的文件inputlist.txt吗?它是否进入匹配的目录?

如果您只想创建目录,您可以执行以下操作:

fgrep -f ./inputfile.txt ./lscommandoutput.txt | xargs mkdir

请注意,您可能希望fgrep输入字符串不被视为正则表达式和正则表达式元字符,例如.被忽略。

于 2012-10-08T22:26:46.570 回答