递归搜索shell中的文件名列表

时间:2017-09-24 10:30:44

标签: bash find cat cp

我在filenames.txt中有一个文件名列表,如下所示:

1.sql  
2.sql  
3.sql  
..  
..  
500.sql  

我想在目录及其子目录中搜索文件名,如下所示:

Dir1/1.sql   
Dir1/2.sql   
Dir2/3.sql   
Dir3/4.sql   
Dir4/5.sql   
Dir4/6.sql   
..   
..   
etc   

并将创建的文件复制到另一个目录。

我试过了:

$ for i in `cat filenames.txt`; do `find ./* -type f -printf "%f\n"|grep -ie "$i" && cp -t "$i" /home/user/other_directory/"$i"`; done

但这不起作用。

1 个答案:

答案 0 :(得分:1)

因为cp的第一个参数是“$ i”(匹配模式)而不是文件名

find . -type f -iname "$i" -exec cp -t "{}" /home/user/other_directory \;