2017-09-24 161 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