Grep
如何列出目錄中的每個文件,除了具有指定副檔名的文件?
假設我有一個包含**.txt**、.pdf和其他文件的文件夾。我想列出“其他”文件(即沒有副檔名**.txt或.pdf**的文件)。你對如何做到這一點有什麼建議嗎?
我知道如何列出沒有給定副檔名的文件。例如,如果我想列出除**.txt**文件之外的所有文件,那麼要麼
find -not -iname "*.txt"
要麼
ls | grep -v '\.txt$' | column
似乎工作。但是,我怎樣才能列出除**.txt**文件或 .pdf文件之外的所有內容?看來我需要在 or 中使用某種邏輯“或
find
”grep
。
假設一個人有 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