find コマンドでファイルが無視されました。

find コマンドでファイルが無視されました。

私のディレクトリには多くのファイルが含まれており、atmを起動していないファイルのみを表示したいと思います。

D:/elite/custom>find d:/elite/custom/test -print
d:/elite/custom/Test
d:/elite/custom/Test/001234.txt
d:/elite/custom/Test/abc123.txt
d:/elite/custom/Test/ATM001.txt
d:/elite/custom/Test/ATM002.txt
d:/elite/custom/Test/DEF111.rtf
d:/elite/custom/Test/wwww.txt
d:/elite/custom/Test/abc


D:/elite/custom>find d:/elite/custom/test -name "[!ATM]*" -print
d:/elite/custom/Test/001234.txt
d:/elite/custom/Test/DEF111.rtf
d:/elite/custom/Test/wwww.txt

なぜ受けなかったのですd:/elite/custom/Test/abc123.txtか?

ベストアンサー1

パラメータが-name呼び出されます。模様、シェルの「ワイルドカード」(ワイルドカードなど)のように見えます。文法は、[!ATM]*あなたが考えているものとは非常に異なることを意味します。つまり、A、T、M以外の文字で始まる名前を意味します。

このパターンatm*(括弧なしで注意)は、「atm」で始まるすべての名前と一致します。持つパターンなしこれを否定し、名前の構文と一致させます。いいえ「atm」で始めましょう。しかし幸運にもfindには「!」一致を無効にする構文があります。 "-name" 引数の前の否定一致 (パターン内にない!): find . ! -name 'atm*'

おすすめ記事