検索を使用して下線/文字パターンを持つファイルを削除する

検索を使用して下線/文字パターンを持つファイルを削除する

このようなパターンを持つファイルを見つけて削除する方法はありますか(パターンはファイル名に文字または数字で区切られた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つの下線が含まれている次のディレクトリにあるシンボリックリンクが削除されます。シンボリックリンクのターゲットは、名前が基準に一致し、現在のディレクトリにあるシンボリックリンクでない限り影響を受けません。

おすすめ記事