Оптимизированный способ составления списка и удаления файлов

Оптимизированный способ составления списка и удаления файлов

Мне нужно вывести список и удалить файлы .php, .xml. Для этого я использую findкоманду.

К списку : find . -type f -name \*.php -print0

Удалить : find . -type f -name \*.php -print0 | xargs -0 rm -r

Поскольку я запускаю findдва раза. Возможно ли сохранить результат первой команды и затем повторно использовать во второй?

Спасибо.

решение1

find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list

Это предполагает, что вы хотите увидеть список, прежде чем решите удалить их. Если нет, вы можете просто сделать:

find . -name '*.php' -type f -print -delete

(обратите внимание, что -print0, -delete, -r, -0не являются стандартными, но поддерживаются реализацией GNU)

Также будьте осторожны, хотя это find -deleteотносительно безопасно, в первом решении кто-то может переименовать каталоги в символические ссылки на некоторые чувствительные области между тем, как вы запустите команду findи, xargsи заставить вас удалить файлы, которые вы не собирались удалять. Запуск findдважды, второй раз с помощью -deleteпозволит избежать этого.

решение2

Поскольку вам нужны файлы .phpи , команда должна выглядеть так:.xmlfind

find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +

Инструкции использовать только один раз для каждого фрагмента файлов. Если бы мы использовали, +мы бы запустили одну команду для каждого файла.findrm\;rm

Связанный контент