このようなパターンを持つファイルを見つけて削除する方法はありますか(パターンはファイル名に文字または数字で区切られた2つの下線のみがあります)
前任者。/file_name_name
find . -name '*_*_' -delete
を使用してこれらのファイルを見つけようとしましたが、成功しませんでした。それはおそらく、ファイルがディレクトリへのシンボリックリンクなのでしょうか?
答え1
ファイル名のワイルドカードパターンは次のとおりです。ほぼ複数の下線付きの名前を正しく検出しますが、名前の末尾に単一の下線を強制します。
*
パターンの末尾に末尾のみを追加しても問題はありません。
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
明らかにいいえ複数のアンダースコアがある名前と一致します。
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
ここで、2番目の部分は-name '*_*_*_*'
3つ以上のアンダースコアを持つすべての名前と一致しますが、前の部分は!
一致の意味を無効にします。
find
ない式は-type
次の名前と一致します。どのファイルの種類、つまりディレクトリ名、名前付きパイプ、ソケット、デバイスファイルなどと一致します。
追加の一致のみ一般ファイルaddを使用したり、ディレクトリ名の一致を防ぐために-type f
使用できます。シンボリックリンクを一致させるには、toを! -type d
使用してください。-type l
最終的なfind
コマンドは次のとおりです。
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
これにより、現在のディレクトリまたは名前に正確に2つの下線が含まれている次のディレクトリにあるシンボリックリンクが削除されます。シンボリックリンクのターゲットは、名前が基準に一致し、現在のディレクトリにあるシンボリックリンクでない限り影響を受けません。