Как мне удалить файлы не только в том каталоге, в котором я нахожусь?

Как мне удалить файлы не только в том каталоге, в котором я нахожусь?

Я хочу удалить файлы старше 30 дней в каталоге, но не в каталогах ниже того, в котором я нахожусь.

решение1

Чтобы просмотреть список файлов перед их удалением:

find . -maxdepth 1 -mtime +30 -type f -ls

Чтобы удалить файлы:

find . -maxdepth 1 -mtime +30 -type f -exec rm {} +

с

  • .указание текущего каталога
  • -maxdepth 1спуститься максимум на 1 уровень каталогов
  • -mtime +30только файлы, последний раз измененные > 30 дней
  • -type fтолько обычные файлы

решение2

Оболочка zsh имеетспециальные функции расширения подстановочных знаковэто помогло бы.

  • вывести список файлов старше 30 дней в текущем каталоге:ls -d -- *(.m+30)

  • удалить файлы старше 30 дней в текущем каталоге:rm -- *(.m+30)

Синтаксис zsh *(.m+30)представляет собой подстановочный знак, который означает:

  • *-- любое имя файла
  • ( ... )-- с оговоркой...
  • .-- обычный файл (не каталог и т.п.)
  • m+30-- время изменения больше 30 дней назад

Связанный контент