
現在の作業ディレクトリのすべてのコンテンツを削除したいと思います。効率的かつエレガントな方法で行うにはどうすればよいでしょうか?
いくつかのファイルとディレクトリがあり、その一部は次のようにドットで始まります。
touch .abc; touch abcd ; mkdir foobar; touch "file name" "#"
このディレクトリを空にするための、POSIX 互換のエレガントなソリューションを探しています。いくつかのアイデアを投稿しますが、どれも完璧ではありません。
答え1
rm -rf -- * .*
zsh
これは移植性があり、動作しますが、 を除いて警告が表示されるため見苦しいです。
rm: cannot remove directory: `.'
rm: cannot remove directory: `..'
答え2
これを試して:
find . -maxdepth 1 -not -name \. -exec rm -rf \{\} ;
答え3
POSIX 的には:
rm -rf -- * .[!.]* ..?*
ファイルのリストが大きすぎる場合は失敗する可能性がありますが、これは失敗しません。
find . ! -name . -prune -exec rm -rf {} +
とzsh
:
rm -rf -- *(D)
答え4
どうですか
rm -rf * .[a-z]* .[A-Z]* .[0-9]*
それは機能しますか? または、一致する他のファイル名パターンもありますか?