gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:24 25 4
gpt4 key购买 nike

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

我有一个文件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 中 grep 出来的。

/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/

希望这更清楚一点。

最佳答案

首先,您赢得 useless use of cat award

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

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

My problem now is using the outputted file with the one file I want to put the folders

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

如果您只想创建目录,您可以这样做:

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

注意您可能需要 fgrep 以便输入字符串不会被视为正则表达式,并且正则表达式元字符(例如 .)会被忽略。

关于linux - 将文本文件中的部分文件名与目录中的文件名进行比较(grep + awk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com