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

Я пишу сценарий оболочки для удаления старых файлов (старше 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 .

  • Как создать и выполнить скрипт bash, который вызывает исполняемый файл из более высокой папки?
  • Группировка строк в гетерогенные подмножества
  • Bash не ищет источник ~ / .bash_profile в OSX
  • xterm не найден абсолютный путь для оболочки
  • Был ли «\ 0» в конце каждого скрипта?
  • Shell Script: захватывать строку в середине текста, иногда в начале
  • Создание скрипта, который запускает простую команду для всех файлов в каталоге
  • команда find с несколькими шаблонами, не возвращающими никакого вывода
  • Как захватить форматирование текста в bash?
  • Параллелизация цикла for
  • Чтение двух файлов в цикл IFS while - есть ли способ получить нулевой результат разбора в этом случае?
  • Linux и Unix - лучшая ОС в мире.