2017-09-24 160 views
0

名单我有内部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 

但这不起作用。

+0

您正在使用什么壳 - 击?你能扩展“不工作”吗?当你运行这个时会发生什么? – halfer

+0

是的,我使用bash ..我的意思是它不起作用是需要5秒,并返回到命令行没有错误,当我检查新的目录,我发现它为空 – mimo

回答

0

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

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

它给“寻找:缺少参数到'-exec'“ – mimo

+0

find命令的最后一个参数'\;'(文字分号)很重要 –

+0

我把它复制过去了..当它把它放在cat输出之后来完成这个想法时,它给了我一个符号的新路线>,因为它需要另一个论点。 – mimo