2011-01-21 91 views
0

我有一個包含200個文件的文件夾。我們可以說這些文件被命名爲「abc0」到「abc199」。其中五個文件包含字符串「ez123」,但我不知道哪些文件。我目前的嘗試找到包含該字符串的文件的文件名是:如何獲取包含特定字符串的文件在有數百個文件時的文件名?

#!/bin/sh 
while read FILES 
do 
cat $FILES | egrep "ez123" 
done 

我有一個文件,其中包含目錄中的所有文件的文件名。所以我然後執行:

./script < filenames 

這是驗證我包含該字符串的文件存在,但我仍然沒有文件的名稱。有沒有關於實現這一目標的最佳方式的任何想法?

感謝

回答

1
find /directory -maxdepth 1 -type f -exec fgrep -l 'ez123' \{\} \; 

-maxdepth 1只需要,如果你只想要搜索的目錄,而不是樹遞歸(如果有任何))。

fgrep比grep快一點。 -l只列出匹配的文件名。

+0

感謝您的反饋,這解決了問題,我能從此過上幸福的生活! – gfrench 2011-01-28 12:19:11

0

嘗試

find -type f -exec grep -qs "ez123" {} \; -print 

這將使用find尋找當前目錄下的所有文件實(和子目錄),他們({}執行grep將通過文件名來代替,-qs告訴它是無聲的,只是設置退出代碼),-print將打印出的文件的名稱是grep的發現一個匹配的行

0

什麼:

xargs egrep -l ez123 

它從stdin讀取文件名並打印出匹配的文件名。

相關問題