web-dev-qa-db-ja.com

コマンドラインで正規表現を使用してファイルを削除するにはどうすればよいですか?

FOOXXという名前のファイルが20個あるとします。XXはファイルの番号です(例:01、02など)。

現時点では、番号10未満のすべてのファイルを削除する場合、これは簡単で、ワイルドカードを使用するだけです(例:rm FOO0 *)。

ただし、13〜15の範囲の特定のファイルを削除する場合は、これがさらに難しくなります。

rm FPP [13-15]が機能せず、すべてのファイルを削除するかどうかを尋ねられます。 Likewse rm FOO1 [3-5]は、FOO1で始まるすべてのファイルを削除したい

それで、このようなファイルの範囲を削除する最良の方法は何ですか?

私はbashとzshの両方を試してみましたが、そのような基本的なタスクではそれほど違いはないと思いますか?

19
Jack

Bashでは次を使用できます。

 rm FOO1 {3..5} 

または

 rm FOO1 {3,4,5} 

fOO13、FOO14、FOO15を削除します。

Bash展開ブレースは文書化されています here

32

今後の読者のために、findコマンドを使用してファイルを削除することもできます。私は同様の問題のためにこれで解決しました:

find . -type f -regex '...' -delete

しかし、選ばれた答えは、この質問に対する最も単純な回答です。

13
GregWW

ls | grep regex | xargs rm

6
gogiel