Grep

如何列出目錄中的每個文件,除了具有指定副檔名的文件?

  • April 5, 2020

假設我有一個包含**.txt**、.pdf和其他文件的文件夾。我想列出“其他”文件(即沒有副檔名**.txt.pdf**的文件)。你對如何做到這一點有什麼建議嗎?

我知道如何列出沒有給定副檔名的文件。例如,如果我想列出除**.txt**文件之外的所有文件,那麼要麼

find -not -iname "*.txt"

要麼

ls | grep -v '\.txt$' | column

似乎工作。但是,我怎樣才能列出除**.txt**文件 .pdf文件之外的所有內容?看來我需要在 or 中使用某種邏輯“或findgrep

假設一個人有 GNU ls,這可能是最簡單的方法:

ls -I "*.txt" -I "*.pdf"

如果要遍歷所有子目錄:

ls -I "*.txt" -I "*.pdf" -R

尋找支持-o

find . ! '(' -name '*.txt' -o -name '*.pdf' ')'

您需要括號來使優先級正確。Find 做了很多事情;我建議閱讀它的手冊頁。

您也可以執行 or in grep(但實際上,您不應該解析 的輸出ls

ls | grep -Ev '\.(txt|pdf)$' | column

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