-2

php mkdir で作成したフォルダを削除できません

for I in `echo $*`
do
    find $I -type f -name "sess_*" -exec rm -f {} \;
    find $I -type f -name "*.bak" -exec rm -f {} \;
    find $I -type f -name "Thumbs.db" -exec rm -f {} \;
    find $I -type f -name "error.log" -exec sh -c 'echo -n > "{}"' -f {} \;
    find $I -type f -path "*/cache/*" -name "*.*" -exec rm -f {} \;
    find $I -path "*/uploads/*" -exec rm -rdf {} \;
done

すべてのファイルとフォルダーの下で削除したいのですが/uploads/、助けてください...

4

3 に答える 3

1

最終的な exec は基本的に同じであるため、find コマンドを -o プラグマを使用して条件を結合するように変更することを検討する必要があります。これにより、ファイル システムを繰り返し再帰することを回避できます。

他の回答は、php mkdir に関する懸念に対処しています。他のコードやコマンドではなく、php mkdir で作成されたという事実とは何の関係もないことを付け加えておきます。これは、所有権と許可によるものです。

于 2012-03-27T20:37:44.743 に答える
0

おそらく、ディレクトリ自体-depthの前のサブディレクトリを削除するコマンドに追加する必要があります。upload

気になります-pathが、なじみがありません。

また、実行されるコマンドの数を減らすために、の+代わりにを使用することを検討してください。\;

于 2012-03-27T20:25:58.513 に答える
0

phpこれは、bashスクリプトを呼び出しているのとは異なるユーザーの下でapacheまたは別のhttpサーバーで実行されていることが原因である可能性が高いと思います。または、uploads /でアップロードされたファイルは、呼び出し元のユーザーではなく、httpサーバーのユーザーが所有している可能性があります。

httpサーバーと同じユーザーでbashスクリプトを実行していることを確認してください。

どのユーザーがどのファイルを所有しているかを確認するには、次のようにします。

ls -l

rootとしてbashスクリプトを実行すると、とにかく削除できるはずですが、これはお勧めしません。

アップデート

nautilusスクリプトのrootとして実行するには、nautilusスクリプトとして以下を使用します。

gksudo runmydeletescript

次に、他のすべてのコードを、入力したものと同じパスを持つ別のファイルに配置しrunmydeletescriptて実行chmod +xします。これは非常に危険です!

于 2012-03-27T20:26:37.790 に答える