rm -rf /some/path/*
このディレクトリ(およびサブディレクトリ)から隠されていないすべてのファイルを削除します。
rm -rf /some/path/.*
そのディレクトリ(サブディレクトリを除く)のすべての隠しファイルを削除し、次のエラー/警告を表示します。
rm: cannot remove directory: `/some/dir/.'
rm: cannot remove directory: `/some/dir/..'
.
との警告/エラーを受け取らずに、ターゲットディレクトリの隠しファイルと隠しファイルとフォルダの両方を再帰的に削除する正しい方法は何ですか..
?
ベストアンサー1
*
ドット以外のすべてのファイルと一致し、名前が始まるファイルを除くすべてのドットファイルと一致し、以外のすべてのファイル.[!.]*
と一致します。 3つのパターンのうちの1つが一致しない場合、存在しない引数については気にせずにそれ自体を拡張するので、実際には重要ではありません。.
..
..?*
..
.
..
rm -f
rm -rf -- ..?* .[!.]* *
を使用することもできますfind
。これはより複雑ですが、ファイルが多すぎて上記のワイルドカードがシステムコマンドラインの長さ制限を超える場合にも機能するという利点があります。
find . -name . -o -prune -exec rm -rf -- {} +
ディレクトリを削除して再作成する方がはっきりする場合があります。これは、他のプログラムが同時に元のディレクトリにファイルを作成しても、空のディレクトリが作成されるという利点(または場合によっては欠点)があります。