ベースフォルダーがあります(ベースと呼びましょう)。
内部にはたくさんのフォルダーがあり、これらのフォルダー内のさまざまな深さにキャッシュフォルダーが散在しています。
キャッシュフォルダー内からすべてのファイルを削除しますが、フォルダー自体は削除しません。
私が試してみました
cd base
#then one of...
Sudo rm -rf cache/*
Sudo rm -rf *cache/*
Sudo rm -rf cache*/*
Sudo rm -rf *cache*/*
しかし、本当に推測しているだけで、正しいコマンドは何でしょうか?
Bashでは、globstarを有効にし、**
を使用して再帰的にディレクトリを一致させることができます
shopt -s globstar
echo rm -rf ./**/*cache*/*
パターンマッチング を参照してください
これにより、cache
という名前のフォルダー内のフォルダーbase
から始まるすべてのファイルが再帰的に削除されます。 cache
フォルダー自体はそのままですが、各フォルダー内のすべてのファイルが削除されます。
find base -ipath "*/cache/*" -type f -delete
extremely強力な検索コマンドを使用できます。
私はこのようなものを使用します:
find . -iname *cache* -ok rm -rf {} \;
それでは、あなたに説明させてください。 Findはアプリケーションの名前であり、多くのオプションがありますが、あなたにとってはそれらの多くは必要ありません。
.
は、この現在のディレクトリを検索することを意味します。つまり、最初に正しいディレクトリにいる必要があります。それは~
だと思います
-iname
は、大文字と小文字を区別しない名前を検索することを意味します。
*cache*
は、名前にキャッシュを含める必要があることを意味します。
今、次の部分は重要です。
-ok
は、後続のコマンドを実行することを意味しますが、最初に実行したい場合は私として実行します。これは-exec
に置き換えることができますが、お勧めしません。それはあなたに告げずに物事を削除し、あなたはそれを望まないでしょう。
さて、次の行(-ok
が実行するもの)はrm -rf {} \;
です
rm -rf
は自明であることを願っています。 {}
は基本的に、見つかったファイルの名前のプレースホルダーです。末尾の\;
は、その行の終わりであることを意味します。
それが理にかなっていることを願っています。
-ok
を含むすべての権利なしでfindコマンドを実行することをお勧めします。最初にすべてのキャッシュファイルのリストをポンプで出力し、それらを確認できます。次に-ok
セクションを追加して、クラックを取得します!
Basedirを、削除するベースディレクトリのパスに置き換えるだけです
$ find basedir -type f -delete
以前にベースディレクトリに移動する方が快適だと感じた場合:
$ cd basedir
$ find . -type f -delete