Как рекурсивно удалить все, кроме списка файлов?

Как я могу рекурсивно удалить все в каталоге EXCEPT небольшой список файлов для сохранения? Например, давайте попробуем удалить все файлы, кроме тех, которые называются f2 и f5 .

 # Create a testing ground mkdir -pd{1..3} touch d{1..3}/f{1..5} # Remove all files EXCEPT ones named f2 and f5. find . -type f -not -name ('f2'|'f5') -type f -exec rm -f '{}' + # Remove empty directories find . -type d -empty -delete 

Производит:

 bash: syntax error near unexpected token `(' 

Конечная цель состоит в том, чтобы выполнить это из большего приложения пользовательского пространства C, но использование system() для выполнения командной строки кажется намного проще.

One Solution collect form web for “Как рекурсивно удалить все, кроме списка файлов?”

 find . -type f -not \( -name f2 -o -name f5 \) -delete 

должен это сделать.

-delete аналогичен -exec rm -f '{}' + но короче и даже более эффективен. Сначала запустите его без него, чтобы подтвердить, что он получает только файлы, которые вы действительно хотите удалить.

  • Включите дополнительные инструкции о том, как запускать файл в hashbang или в другом месте
  • Печать многострочной переменной в столбце
  • скрипты bash преобразуют прописные буквы в нижний регистр и наоборот
  • Запуск сценария при запуске и после переключения сети
  • Bash: Родной способ избавиться от цитаты вокруг каждого элемента массива
  • файл шаблона в качестве входа в RS, FS в awk / sed / grep для распознавания и добавления столбцов
  • Сценарии оболочки, связанные с трубой: прерывание ловушки одного скрипта
  • Проверьте, нет ли часов на машинах, где я могу только отправлять задания
  • Переименовать скрипт bash - false нет такой ошибки файла или каталога
  • Shell command / script, чтобы узнать, жив ли хост?
  • как изменить один столбец и добавить другие столбцы в строке awk
  • Interesting Posts

    Как я могу автоматически создать документ, который позволяет мне сравнивать список из 4 .png файлов бок о бок?

    Рефакторинг для поиска цикла для использования exec

    Установить модуль ядра

    PPPD на Yocto (Telit LE910, подключающийся к Telstra)

    Как клиенты X знают, что им нужно будет подключиться к TCP-порту 6000+ <номер дисплея>?

    Каков правильный способ запуска драйвера при загрузке?

    Журналы планировщиков процессов Unix / Linux

    Ошибка выхода из сценария из командной подстановки

    В VI, как я вставляю текст в свой файл из ряда строк, которые я дернул?

    Многострочные комментарии сценария оболочки – как это работает?

    Могу ли я ограничить общий cputime, используемый группой?

    Arch Linux: Apache просто не интерпретирует файлы index.php

    Не удается добавить хост к icingaweb2

    Перезаписывать Linux во время использования

    nginx: не удалось создать referer_hash, вы должны увеличить referer_hash_bucket_size: 64

    Linux и Unix - лучшая ОС в мире.