一部のディレクトリを除いて空でなくても、ファイルとディレクトリを削除します。

一部のディレクトリを除いて空でなくても、ファイルとディレクトリを削除します。

ディレクトリのすべての内容と一部の除外内容を削除しようとしています。私は現在これを使用しています:

find . -type f | grep -vZf ../../exclude.file | xargs rm -rf

これには以下がexclude.file含まれます。

*log*
world*
crash-reports
banned-ips*

world、フォルダ、またはその内容を削除したくありません(*はで作成されたバックアップを上書きしますlog)。crash-reportsworld.zip

上記のコマンドはこれを行いますが、空でないディレクトリは削除しません。たとえば、Configディレクトリは保存されていますが、削除する必要があります。

私も次のことを試しました。

find -maxdepth 0 -not -name '*log*' -not -name 'crash-reports' -not -name 'world*' | xargs rm -rf

しかし、私はまだ同じ結果を得ます。

これを行う方法はありますか?

ベストアンサー1

-type fディレクトリは検索できず、ファイルのみを検索できます。-maxdepth 0検索しているディレクトリのみが検索されます(.)。実際に渡したいファイルを見つける必要がありますrm

標準的なアプローチは、ディレクトリを除外することです。そしてそのすべて次のようになります(テストされていません!)。

find . -mindepth 1 \( -name '*log*' -o -name 'crash-reports' -o -name 'world*' \) -prune -o -print

おすすめ記事