我发现了许多类似的例子,但找不到一个例子来做以下事情。我有一个文件名(file1,file2,file3等)的查询文件,并希望在目录树中找到这些文件;这些文件可能在目录树中出现不止一次,所以我正在寻找完整的路径。此选项效果很好:
find path/to/files/*/* -type f | grep -E "file1|file2|file3|fileN"
我想要的是将grep文件传递给文件名,例如使用-f选项,但不成功。非常感谢您的见解。
这是查询文件的样子: 所以该文件包含一列由'\ n'分隔的文件名,这是它的样子:
103128_seqs.fna
7010_seqs.fna
7049_seqs.fna
7059_seqs.fna
7077A_seqs.fna
7079_seqs.fna
答案 0 :(得分:1)
grep -f FILE
获取与FILE
相匹配的模式... 每行一个* :
cat files_to_find.txt
n100079_seqs.fna
103128_seqs.fna
7010_seqs.fna
7049_seqs.fna
7059_seqs.fna
7077A_seqs.fna
7079_seqs.fna
删除任何空格(或手动执行):
perl -i -nle 'tr/ //d; print if length' files_to_find.txt
创建一些要测试的文件:
touch `cat files_to_find.txt`
使用它:
find ~/* -type f | grep -f files_to_find.txt
输出:
/home/user/tmp/7010_seqs.fna
/home/user/tmp/103128_seqs.fna
/home/user/tmp/7049_seqs.fna
/home/user/tmp/7059_seqs.fna
/home/user/tmp/7077A_seqs.fna
/home/user/tmp/7079_seqs.fna
/home/user/tmp/n100079_seqs.fna
这是你想要的吗?