bash script rm не может удалить папку, созданную php mkdir - PullRequest
0 голосов
/ 28 марта 2012

Я не могу удалить папку, созданную 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/ все файлы и папки, пожалуйста, помогите мне, спасибо ...

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Вам следует подумать об изменении команды find для использования прагмы -o, чтобы объединить ваши условия, так как конечный exec в основном такой же. Это позволит избежать повторного обращения к файловой системе.

Другие ответы касаются вашего беспокойства по поводу php mkdir. Я просто добавлю, что это не имеет ничего общего с тем, что он был создан с помощью php mkdir, а не с любым другим кодом или командой. Это связано с владением и разрешениями.

0 голосов
/ 28 марта 2012

Я думаю, что это наиболее вероятно, потому что php работает в apache или другом http-сервере под другим пользователем, чем вы запускаете скрипт bash.Или, возможно, файлы, загруженные в uploads /, принадлежат пользователю http-сервера, а не пользователю, который его вызывает.

Убедитесь, что вы запускаете скрипт bash под тем же пользователем, что и ваш http-сервер.

Чтобы узнать, какому пользователю принадлежит какой файл:

ls -l

Если вы запустите скрипт bash от имени root, вы все равно сможете его удалить, но это не рекомендуется.

Обновление

Чтобы запустить его как root для скрипта nautilus, используйте в качестве скрипта nautilus следующее:

gksudo runmydeletescript

Затем поместите весь другой код в другой файл с тем же путем, что и у васдля runmydeletescript и запустить chmod +x на нем. Это чрезвычайно опасно!

0 голосов
/ 28 марта 2012

Вы, вероятно, должны добавить -depth к команде для удаления подкаталогов upload перед самим каталогом.

Я беспокоюсь о -path, но я не знаком с ним.

Также рассмотрите возможность использования + вместо \; для уменьшения количества выполняемых команд.

...