検索を使用してフォルダを除いて空のファイルを削除します。

検索を使用してフォルダを除いて空のファイルを削除します。

私は通常、次のコマンドを使用して検索を介してホームディレクトリの空のファイルとフォルダを削除します。

find /home/tjuh -empty -delete

しかし、フォルダを除外したかった。つまり、/home/tjuh/.local/share/Steam/steamapps/common/次のことを試しました。

find . -not -path '/home/tjuh/.local/share/Steam/steamapps/common/' -empty

そのフォルダが検索から除外されていることを確認したいのですが、実際には好きなように機能しません。

どんな提案がありますか?

答え1

パラメータ-pathはパターンなので、ワイルドカードを使用する必要があります。それ以外の場合は正確に一致します。

find . -not -path "./.local/share/Steam/steamapps/common/*" -empty

また、絶対パスや相対パスを混在させてはいけません。上は相対パス、下は絶対パスです。

find /home/tjuh -not -path "/home/tjuh/.local/share/Steam/steamapps/common/*" -empty

答え2

このディレクトリを除外する場合そして彼らのすべての子孫-prune必要なものは次のとおりです。

find "$HOME" -path "$HOME/.local/share/Steam/steamapps/common" -prune -o -empty -delete

これは、パスが一致する場合$HOME/.local/share/Steam/steamapps/common-pruneそのパスとサブアイテムを無視)続行し、そうでない場合-empty-deleteおよび続行)を意味します。

答え3

努力する:

rm `find /home/tjuh -empty | grep -v "^/home/tjuh/.local/share/Steam/steamapps/common/"`

関連情報