2015-04-21 29 views
2

說我有輸出來查找文件與文件名部分

ptext1 
ptext2 
ptext3 
ptext4 

FILE1.TXT這些都是我想從一個目錄下找到部分文件名(庫名)。喜歡的東西

cat file1.txt | xargs find . -name "*$0*" 

或者說,

cat file.txt | awk '{system("find . -name " *$0*)}' 

他們都不是工作。 請建議。

+0

xargs將標準輸入追加到傳遞的命令中;它不會設置$ 0(但是當你的shell解析該行時,你的shell可能會擴展),所以你的想法不起作用。 xargs也可能同時附加多個輸入字,您必須使用-n 1來禁止輸入字。而不是xargs,你可以簡單地在$(cat file1.txt)中聲明'foreach文件;找到-name「* $ file *」;完成「等等。 –

+0

總是嘗試並避免** UUOc **(貓的不必要的用戶)。幾乎每個使用**貓管**或'cat | foo'可以通過避免不必要的'cat'子shell產生的方式來完成。 –

+0

@ DavidC.Rankin很確定它的'貓沒用'! –

回答

1

我敢肯定有一個更優雅的方式,但你總是可以遍歷並運行在每個find

更新,以反映的意見建議

while read -r filename; do 
    find . -type f -name "*$filename*" 
done < file1.txt 
+0

不一定更優雅,但更快,如果這是一個問題,將組裝一個'find'命令行,看起來像'find -name -o -name ...'。如果實際搜索很短,每次調用查找都會產生很大的開銷。 –

+0

只是爲了防止高速文件/路徑名'read -r'可能會有所幫助。您可能還想添加'-type f'來通過find命令刪除匹配的目錄。 –

+0

關注評論? – Will

1

一個與xargs的方式

xargs -I{} find . -name "*"{}"*" < file