Files

查找不包含指定字元串的文件名

  • March 20, 2022

我想執行相反的操作:

find . -name "*2013*"

查找目前目錄中名稱中不包含字元串“2013”​​的所有文件。我怎樣才能做到這一點?

簡單地:

find . ! -name '*2013*'

添加 a! -type d以排除目錄類型的文件(如其.自身),或-type f僅包含正常文件,排除所有其他類型的文件(目錄、fifos、符號連結、設備、套接字……)。

但是要注意*匹配 0 個或多個字元的序列。因此,它可以報告包含在目前語言環境中無法完全解碼為有效字元的文件名2013之前2013或之後的文件名。

如果您在一個語言環境中,對於以不同編碼編碼的文件名,字元可以在多個字節上編碼(如在 UTF-8 中),則可能會發生這種情況。例如,在 UTF-8 語言環境中,Stéphane2013如果文件é已以 iso8859-15 字元集(作為 0xe9 字節)編碼,它將報告該文件。

最好的辦法是確保文件名以語言環境的字元集編碼,但如果你不能保證,解決方法是find在 C 語言環境中執行:

LC_ALL=C find . ! -name '*2013*'

引用自:https://unix.stackexchange.com/questions/102611