Мне нужно вывести список и удалить файлы .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
и , команда должна выглядеть так:.xml
find
find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +
Инструкции использовать только один раз для каждого фрагмента файлов. Если бы мы использовали, +
мы бы запустили одну команду для каждого файла.find
rm
\;
rm