Удаление старых файлов в каталоге, кроме файлов, присутствующих в файле исключений

Я пишу сценарий оболочки для удаления старых файлов (старше 60 дней) в каталоге, кроме нескольких файлов, и эти имена файлов поддерживаются в файле исключений, присутствующем в другом каталоге.

Я знаю, что следующая команда работает для одного файла исключений, но мне нужно проверить список файлов исключений

find . ! -name 'file.txt' -type f -exec rm -f {} + 

Ваша помощь будет оценена по достоинству.

2 Solutions collect form web for “Удаление старых файлов в каталоге, кроме файлов, присутствующих в файле исключений”

Предполагая, что ваши файлы имеют здравомыслящие имена (т. Е. Они не имеют встроенных новых строк), что-то вроде этого должно работать:

 find . -mtime +60 | fgrep -v -x -f exceptions.txt | xargs -d '\n' rm -f 

Замените rm -f ls -1 для сухого хода. Поместите пути точно так же, как они напечатаны, find в exceptions.txt .

Я не думаю, что у find есть такой вариант, вы можете создать команду с использованием printf и вашего списка исключений:

 find . -name "*.txt" $(printf "! -name %s " $(cat file.txt)) -mtime +60 -exec rm -f {} + 

file.txt будет иметь список файлов для исключения в команде find .

  • Количество символов языка X в смешанном текстовом файле?
  • Как заменить символ || с | "" | использование sed
  • Извлечение определенной информации из журналов
  • Неблокированный опрос от двух труб?
  • Как сделать «если нет» в Bash без теста?
  • Вывод трубы одной команды двум другим
  • Использование basename для расширения расширений файла и поиска файлов с тем же именем
  • Можно ли сохранять ssh-соединение в bash-скрипте вместо $ (ssh user @ ip command) каждый раз?
  • Очистка ошибок для сценариев оболочки
  • Bash удаляет все символы после шаблона с помощью awk
  • Помогите с чтением скриптов из файла и определите, являются ли они четными или нечетными числами
  • Как подключить и отключить соединение openvpn в сценарии bash?
  • Linux и Unix - лучшая ОС в мире.