2010-08-31 169 views
3

如何編寫一個bash命令來查找當前目錄中包含單詞「foo」的所有文件,而不管大小寫?unix bash命令

+2

於緊密的選民,這屬於牢固地插入外殼編程的在我腦海裏的境界。 – ysth 2010-08-31 00:21:22

+5

包含「foo」的文件,包含WORD foo的文件或包含foo的文件名?和當前目錄,你的意思只是在當前目錄,或當前目錄&所有子目錄?隱藏文件怎麼樣,你也想搜索這些文件嗎? – George 2010-08-31 01:06:13

回答

1

假設你想要的文件(而不是文件名)

內搜索如果你只希望搜索當前目錄(不是樹)

grep * -nsie "foo" 

如果要掃描整個樹(從當前目錄)

grep . -nsrie "foo" 
-1

找到。 -type f | grep的-i 「富」

+0

可以找到包含「foo」的FILENAMES,不包含文本。 (並遞歸目錄樹) – ocodo 2010-08-31 00:50:26

+0

,並且沒有必要使用grep.use find的-iname或-name – ghostdog74 2010-08-31 01:02:21

+0

如果要將其包裝在腳本中,只需鍵入「findnocase foo」,它應該如下所示: 找。 -type f | grep -i $ 1 – 2010-08-31 01:14:51

0
shopt -s nullglob 
shopt -s nocaseglob 
for file in *foo* 
... 
... 
.. 
2

如果你想 「富」 是在.對文件的較量中檢查,這樣做:

grep . -rsni -e "foo" 

更多選項(-I, - T,...)見man grep

+1

OP要求不區分大小寫。你忘了'-i'。 – 2010-08-31 02:14:15

+0

謝謝。改變。 – bitmask 2010-09-30 15:32:58

0

嘗試:

echo *foo* 

將打印的文件/目錄名在當前目錄中,這恰好匹配包含「富」的任何名稱匹配*foo*

0

我一直使用這個小shell命令:

gfind() { if [ $# -lt 2 ]; then files="*"; search="${1}"; else files="${1}"; search="${2}"; fi; find . -name "$files" -a ! -wholename '*/.*' -exec grep -Hin ${3} "$search" {} \; ; } 

您要麼gfind '*php' 'search string'調用它,或者如果你想搜索所有文件gfind 'search string'