ディレクトリ内のすべてのファイルを削除する

ディレクトリ内のすべてのファイルを削除する

一部のファイルを含むディレクトリと他のファイルを含むいくつかのフォルダがあります。フォルダやその内容に触れることなく、ホームディレクトリにあるファイルを削除しようとしています。

私はこれを使用しています

rm /media/d/data/*

うまく機能し、ファイルだけを削除しますが、端末に次のメッセージが表示される理由を知りたいです。

rm: cannot remove /media/d/data/dd1: Is a directory

既定のフォルダの下にあるすべてのフォルダに同じメッセージが表示されます。誰でもこれを説明できますか?端末にこのメッセージが表示されないようにする方法はありますか?

答え1

デフォルトでは、rmディレクトリは削除されません。ディレクトリを削除するにはを使用しますrm -rf。メッセージを隠すにはを使用しますrm <dir> 2>/dev/null。他のすべてのエラーメッセージも表示されません。

答え2

この*は2つを選択します文書そして目次。ファイルを削除するには、これを試してください

find /media/d/data/ -maxdepth 1 -type f -delete

答え3

POSIX的に:

find ! -name . -prune -type f -exec rm -f {} +

答え4

rm指示されたファイルを削除してください。*すべてのファイル(ディレクトリを含む)に展開されるため、rmディレクトリを削除するように求められますが、削除されません。

ほとんどのシェルはワイルドカードパターンからディレクトリを除外できません。ワイルドカードパターンは、タイプではなく名前でのみファイルを照合します。あなたはできますfind代わりに使用

Zshはグローバル予選タイプ、日付などに基づいてファイルを照合できます。zshから、あなたはそれを使用することができます

rm *(.)

rm *(-.)すべての一般ファイルを削除したり、一般ファイルと一般ファイルへのシンボリックリンクを削除したり、ディレクトリを除くすべてのファイルを削除したりするrm *(^/)などのバリエーションを削除します。

*省略するのも参考にしてくださいファイルをクリック(名前で始まるファイル.)。findそれらを含めます。 zsh では、*ドットファイルはデフォルトで省略されます。Dたとえば、括弧内に追加してrm *(.D)含めることができます。

関連情報