2012-09-15 2365 views
1

我知道使用類似[^a]*的東西會輸出所有不以"a"開頭的文件。Linux - 查找不包含某些字符的文件

如果我想呼應包含不以​​啓動(但可以包含在文件名的中間​​)至少5個字符的文件,我應該如何去這樣做?

echo [^abc]?????* 

但輸出也去除了像"123abc"文件,這些文件我不太明白。

+0

可能重複http://stackoverflow.com/問題/ 12439864/echo-for-editing) – tripleee

回答

2

你不表示你的問題適用於任何操作系統,但以確定該組在Mac OS X或Linux文件相匹配的一個方法是:

find . -maxdepth 1 -type f -name "?????*" | egrep -v "./abc" 

注意,這將列出只有文件當前目錄。如果要將文件包含在子目錄中,則需要刪除maxdepth參數。

另請注意,這些命令區分大小寫。您需要使用-iname-i以使它們不區分大小寫。

編輯:

如果你真的需要使用呼應命令,下面的工作:

echo `find . -maxdepth 1 -type f -name "?????*" | egrep -v "./abc"` 
[迴音編輯](的
+0

有沒有什麼方法可以處理echo?我在Linux Mint – Arioso

+1

'[^ abc]'指定了一個不能是'a','b'或'c'的字符。 Glob模式不容易屈從於你所要求的,你必須使用更強大的形式,比如Bash的'extglob'設施,或者枚舉所有可能的情況('[^ a] *','a [^ b] *','a','ab [^ c] *','ab',或者在您的特定情況下,甚至更復雜)。 – tripleee

+0

我不明白使用* echo *命令解決問題的重要性。 * echo *將輸出引導到屏幕,就像* find *一樣。 這就是說,我編輯了我的答案。 –

相關問題