web-dev-qa-db-ja.com

部分的な名前に基づいてディレクトリ内のファイルを削除する

拡張子が部分的な名前に基づいていても、ファイルを削除する最良の方法を知りたいと思いました。

例:

13-05-12_foo_something.jpg
13-06-01_something.png
13-05-05_foo_site.html

名前に_foo_が含まれるディレクトリおよびサブフォルダ内のすべてをrmします。

簡単な方法:

cd /path/to/directory
rm *_foo_*

または

rm /path/to/directory/*_foo_*

アスタリスク(*)はすべての文字に一致します。

何が行われているかについての説明を取得するには、rm-vオプションとともに使用します。すべての削除の前にプロンプ​​トを表示するには、rm-iオプションとともに使用します。

rm -vi *_foo_*

詳細については、man rmを参照してください。

4
Radu Rădeanu

すべてのサブディレクトリでもそれを行いたい場合、最も簡単な方法はglobstar Shellオプションを有効にすることです:

shopt -s globstar
rm **/*foo_*

デフォルトの#(私の場合は29行目)にコメント(つまり、~/.bashrcで始まる行)が必要です。

# shopt -s globstar extglob

その行のコメントを外すだけで、いくつかの 改良されたbash機能 にアクセスできます。

1
evilsoup