2017-01-15 108 views
0

所以我必須找到在/ etc目錄下的所有文件,與A,B或C開始使用正則表達式和grep

我有什麼是搜索在目錄中的文件:grep -l '/^[a-cA-C].*/g' /etc/*雖然我不斷收到的每一個文件/ etc目錄。

我用grep -l讓每一個文件(我猜使用findgrep不要緊

'/^[a-cA-C].*/g'發現了,b或c開頭大寫或小寫,然後用一個結尾零個或多個字符的一切全局搜索,因此不會在第一場比賽

我知道正則表達式是正確的,因爲我曾與一個正則表達式檢查器檢查它的在線後停止

編輯:找到了解決辦法 - > LS /等。/[a-cA-C] *

+0

你會使用命令「LS」,而不是「grep的」,在目錄中查找文件。 'ls'命令不使用grep的正則表達式,而是使用shell使用它自己的「模式匹配」擴展爲文件列表的參數 - 請參閱http://wiki.bash-hackers.org/syntax/pattern例如。編輯:哎呀,對不起 - 你是指其內容以'a','b'或'c'開頭的文件嗎? – racraman

+0

我的意思是如果/ etc目錄中有一個以a,b或c開頭的文件。例如,apple.txt必須返回它,但如果有一個名爲windows.txt的文件,它不應該返回windows文件。 – ThomasP

+0

太棒了 - 那麼我原來的評論就適用了,所以請使用'ls'命令和那個鏈接中的模式:) – racraman

回答

0

這裏我舉的例子:

find ./ -type f -exec basename {} \; | grep -Ei '^(a|b|c)' 

它遞歸搜索和查找所有文件,但在輸出只返回文件的basename,是不是你合適嗎?

0

你可以試試這個:

find | grep '^\./[abc]'