web-dev-qa-db-ja.com

ターミナルを使ってファイルやディレクトリを素早く削除する方法(bash Shell)

端末ウィンドウから:

rmコマンドを使用すると、ファイルを削除することしかできません。
rmdirコマンドを使用すると、空のフォルダーのみが削除されます。

ファイルを含むフォルダ内にファイルやフォルダを入れ子にしたディレクトリがある場合など、コマンドを何度も入力しなくてもすべてのファイルやフォルダを削除する方法はありますか。

それが違いを生むのであれば、私はMicrosoft DOSやLinuxではなく、端末からMac bashシェルを使っています。

291
None
rm -rf some_dir

-r "recursive" -f "force"(確認メッセージを表示しない)

注意してください!

682
Jim Lewis
rm -rf *

現在のディレクトリ内のすべてのもの(フォルダとファイル)を削除します。

しかし注意してください。 このコマンドは、確実に正しいディレクトリにいることを確認した場合にのみ実行してください。

52
Prine

はいあります。 -rオプションは、rmが r再帰的で、引数をルートとするファイル階層全体を削除します。つまり、ディレクトリを指定すると、そのコンテンツがすべて削除され、rmdirと実質的に同じことが実行されます。

知っておくべき他の2つのオプションは、-i-fです。 -iは インターアクティブ;すべてのファイルを削除する前にrmプロンプトが表示されます。 -fは fオース;それは先に進み、尋ねることなくすべてを削除します。 -iはより安全ですが、-fはより高速です。 完全に確実正しいものを削除する場合にのみ使用してください。これらを-rで指定するかどうかを指定できます。それは独立した設定です。

通常どおり、スイッチを組み合わせることができます。rm -r -irm -riで、rm -r -frm -rfです。

また、学習していることは、すべてのUnix OS(OS X、Linux、FreeBSDなど)のbashに適用されることに注意してください。実際、rmの構文はほとんどすべてのシェルすべてのUnix OS。ボンネットの下のOS Xは、実際にはBSD Unixシステムです。

11

それで私は、いくつかのディレクトリとファイルを除いて、ディレクトリの中のすべてのファイルを削除する方法をずっと探していました。たくさんの検索の後、私はfindを使ってそれをする方法を考案しました。

find -E . -regex './(dir1|dir2|dir3)' -and -type d -Prune -o -print -exec rm -rf {} \;

基本的には正規表現を使用して結果から除外するディレクトリを選択してから残りのファイルを削除します。他の誰かがそれを必要とした場合に備えて、ここにそれを出したかっただけです。

2
msantoro12