Следующая команда пытается удалить все файлы .php в /, если папка разрешена 0777
find / -type f -perm 0777 -exec rm -rf *.php \; -exec rm -rf *.html \;
с
find / -type d -perm 0777 -print0 | xargs -0 rm -rf *.php
это папка для удаления, а не файлы php
ищу запустить его с помощью команды терминала ssh
я ищу все папки с 0777 и удаляю все php файлы в него
вы можете легко использовать RecursiveDirectoyIterator
сделать это следующим образом:
$directory = 'test/';
$iterator = new RecursiveDirectoryIterator($directory);
$directoryIterator = new RecursiveIteratorIterator($iterator);
foreach ($directoryIterator as $file) {
$octalPermission = substr(decoct($file->getPerms()), -4);
$extension = $file->getExtension();
if (!$file->isDir() && $octalPermission == '0777' && $extension == 'php') {
// do some stuff
unlink($file->getPathname());
}
}
это будет recursively
переберите ваш php файл в определенном каталоге с определенным разрешением и удалите его.
использовать его только для текущего каталога —не рекурсивно— изменить это:
$iterator = new RecursiveDirectoryIterator($directory);
$directoryIterator = new RecursiveIteratorIterator($iterator);
следующим классом:
$directoryIterator = new DirectoryIterator($directory);
Тем не менее, до тех пор, пока OP просит сделать это, используя терминал, а не php,
Вы можете использовать следующую команду:
find ./test/ -type f -name "*.php" -perm 0777 | xargs rm
сначала оформить заказ на каталоги с разрешением 777 следующим образом:
find ./test/ -type d -perm 0777 | xargs -I {} find {} -type f -name "*.php" -perm 0777 | xargs rm
чтобы эта команда применялась в файлах с пробелами / специальными символами, вы можете использовать -d
Опция -delimiter, чтобы установить его \n
следующее :
find ./test/ -type d -perm 0777 \
| xargs -I {} find {} -type f -name "*.php" -perm 0777 \
| xargs -d '\n' rm
// ^^^^^^^ notice this
это позволит найти имя файла с расширением php и разрешением 0777, а затем удалить их.
для любой из предыдущих команд, когда вы пытаетесь использовать xargs
команда с rm
Команда, если в ваших критериях поиска нет файлов, терминал может выдать ошибку, подобную следующей:
rm: missing operand
чтобы избежать этого, вам нужно будет добавить -r
опция для xargs:
-r, --no-run-if-empty if there are no arguments, then do not run COMMAND;
Вы можете использовать его следующим образом:
xargs -r -d '\n' rm
Других решений пока нет …