У меня есть определенный файл, который находится в нескольких каталогах. Обычно я удаляю их все, используя синтаксис:
find . -name "<Filename>" -delete
Однако я хочу сохранить один файл из определенной папки, скажем FOLDER1.
Как мне это сделать с помощью find? (Я хочу использовать find
, потому что я использую -print
перед -delete
, чтобы проверить, какие файлы я удаляю. Я опасаюсь использовать rm
, так как существует опасность удаления файлов, которые я хочу сохранить.)
Заранее спасибо.
find
вместоrm
, чтобы вы могли сначала использовать-print
: ваши опасения разумны, но обратите внимание, что сrm
вы можете добиться того же, добавивecho
в начале. - person ruakh   schedule 12.08.2015echo
:shopt -s extglob
, за которым следует (в отдельной строке, поскольку extglob является опцией парсера):printf '%q ' rm !(FOLDER1)/filename; echo
-- таким образом, имена с пробелами, скрытыми символами и т. д. печатаются однозначно, а вывод представляет собой операторrm
, который можно скопировать/вставить обратно в оболочку, не беспокоясь о том, что будет делать имя каталога, включающее литеральную строку$(rm -rf .)
. - person Charles Duffy   schedule 12.08.2015shopt -s globstar
и используя, например,**/!(FOLDER1)/filename
) в противном случае. - person Charles Duffy   schedule 12.08.2015