私の名前はいくつかあります。
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
。
ワイルドカードは、シェルがパターンを取得し、パターンと一致するファイル名のリストに展開するプロセスです。正規表現と混同しないでください。正規表現は異なります。ほとんどの時間を過ごしたら、bash
Wooledge 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