共通のプレフィックスとサフィックスを含む複数のファイルを削除する方法は?

共通のプレフィックスとサフィックスを含む複数のファイルを削除する方法は?

私の名前はいくつかあります。

sequence_1_0001.jpg  
sequence_1_0002.jpg  
sequence_1_0003.jpg  
...

とファイル名

sequence_1_0001.hmf  
sequence_1_0002.hmf  
sequence_1_0003.hmf  
...

とファイル名

sequence_2_0001.jpg  
sequence_2_0002.jpg  
sequence_2_0003.jpg  
...

そして

sequence_2_0001.hmf  
sequence_2_0002.hmf  
sequence_2_0003.hmf  
...

「sequence_1」で始まり、「.hmf」で終わるファイルだけを削除したいのですが、何千ものファイルがあるため、1つずつ削除したくありません。プレフィックス「sequence_1」で始まり、「.hmf」で終わるすべてのエントリを削除するrmコマンドをどのように指定しますか?

私は現在RedHat Linuxシステムを使用していますが、他のディストリビューションでもどのように使用しているのかを知りたいです。

ベストアンサー1

rm sequence_1*.hmf

sequence_1で始まり終わるファイルを削除します.hmf


ワイルドカードは、シェルがパターンを取得し、パターンと一致するファイル名のリストに展開するプロセスです。正規表現と混同しないでください。正規表現は異なります。ほとんどの時間を過ごしたら、bashWooledge Wikiに良い情報があります。ワイルドカードページ(パス名拡張)。最大の移植性が必要な場合は読んでください。パターンマッチングのためのPOSIX仕様そして/代わりに。


もし遭遇する場合「パラメータリストが長すぎます」エラーが発生しました。確認してみてください。バッシュFAQ 95、この問題を解決しました。最も簡単な解決策は、エラーが消えるまでグローバルパターンを複数の小さな塊に分割することです。あなたの場合、次のように、0から9をプレフィックスとして使用して一致を分割できます。

for c in {0..9}; do rm sequence_1_"$c"*.hmf; done
rm sequence_1*.hmf  # catch-all case

おすすめ記事