次のフォルダがあるとしましょう。。 txt、.pdfその他のファイル。 「その他」ファイル(拡張子のないファイルなど)を一覧表示したいと思います。。 txtまたは.pdf)。これを行う方法に関する提案はありますか?
特定の拡張子なしでファイルを一覧表示する方法を知っています。たとえば、リストを作成したい場合。 txtファイルを作成してから
find -not -iname "*.txt"
または
ls | grep -v '\.txt$' | column
うまくいくようです。しかし、どのように除外してリストできますか?。 txt文書または .pdf文書?find
orの中にある種の論理的な「or」を使用しなければならないようですgrep
。
答え1
GNUを仮定すると、ls
これがおそらく最も簡単な方法です。
ls -I "*.txt" -I "*.pdf"
すべてのサブディレクトリを繰り返すには、次の手順を実行します。
ls -I "*.txt" -I "*.pdf" -R
答え2
サポートを探す-o
find . ! '(' -name '*.txt' -o -name '*.pdf' ')'
正しい優先順位を確保するには、括弧が必要です。 Findは多くのことができます。マンページを読むことをお勧めします。
またはinを実行することもできますgrep
(しかし実際には出力を解析しないでください。ls
)
ls | grep -Ev '\.(txt|pdf)$' | column
答え3
bash
拡張ワイルドカード(openを使用shopt -s extglob
)を使用すると、ワイルドカードが!(*.txt|*.pdf)
機能します。 ls
.
答え4
find /path/to/directory '!' -name '*.pdf' '!' -name '*.txt'
これは、OR演算子を使用したコマンドと同じです。ドモーガンの法則。