一个命令,用于查找另一个文件夹中文件的文件名列表

时间:2014-04-14 10:52:35

标签: shell command-line

我对Unix命令很陌生,对你们这些人来说这可能是非常直观的,所以请原谅我的无知。

我想要的是找到包含其他子文件夹和文件的文件夹中的所有.txt文件。使用找到的列表,它应该只是文件名和扩展名(没有完整路径),我需要搜索另一个文件夹中的所有.xml文件(也有子文件夹和文件,并且是第一个搜索文件夹的父文件)在第一次搜索中找到的文件名的出现。

希望这很清楚!

我尝试过这个并没有用(我知道,这绝对是初学者的尝试):

find . -name "*.txt" -printf "%f\n" -exec find .. -name "*.xml" | xargs grep {} \;

2 个答案:

答案 0 :(得分:1)

也许是这样的(未经测试):

find . -name "*.txt" -printf "%f\n" > /tmp/a
find . -name "*.xml" -exec grep -HFf /tmp/a {} \; 

也可以添加-w以进行单词分隔搜索。

进程替换的另一种尝试:

find . -name "*.xml" -exec grep -HFf <(find . -name "*.txt" -printf "%f\n") {} \;

答案 1 :(得分:0)

这是你正在寻找的吗?

find . -name \*.txt -exec basename {} .txt \; | while read file; do grep -l "\<${file}\>\.txt" /path/to/*.xml && echo "found: $file"; done

请注意,如果文件名中包含空格,换行符等特殊字符,则此解决方案存在破坏的风险。