(時には空の)ディレクトリからすべてのファイルを削除します。

(時には空の)ディレクトリからすべてのファイルを削除します。

私のスクリプトには、ディレクトリからすべてのファイルを削除するコマンドがありますwww

rm -rf www/*

ただし、場合によってはwwwディレクトリが空です。それから彼はスクリプト全体が失敗するように命じました。

空のディレクトリで失敗しないより良いコマンドがありますか?

編集:ファイルを保存したいので、隠されたファイルが削除されていない場合は完璧です.gitkeeep。私が受け入れることができる最悪のシナリオ... && touch .gitkeep

ベストアンサー1

POSIXの使用find:

find www -path 'www/[!.]*' -prune -exec rm -r -- {} +

設計上の引数が指定されていない場合、findは失敗しません。バラよりマニュアルの例8これはこれを明らかに示しています。

オプション意味:

  • -pathwww/ドットで始まり、後にドットが来ないパスのみを検索することを指定します(したがって、削除リストから隠しファイルを除外します)。

  • -prunefindがディレクトリから降りようとする試みを防ぎます(すでにこれをrm -r行うことを使用しています)。

  • --inでは、rm -r -- {} +ハイフンで始まる場合でも見つかったファイルを処理できます。

おすすめ記事