エレガントな方法でディレクトリの内容を削除する

エレガントな方法でディレクトリの内容を削除する

現在の作業ディレクトリのすべての内容を削除したいと思います。これを効率的かつエレガントに行う方法は?

いくつかのファイルとディレクトリがあり、そのいくつかはドットで始まります。たとえば、次のようになります。

touch .abc; touch abcd ; mkdir foobar; touch "file name" "#"

私はこのディレクトリを空にするためのposix互換性とエレガントなソリューションを探しています。私のアイデアのいくつかを投稿する予定ですが、それらのどれも完璧ではありません。

答え1

rm -rf -- * .*

これは移植可能で動作しますが、withに加えて次の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]*

それはうまくいくでしょうか?それとも一致する必要がある他のファイル名パターンはありますか?

関連情報