Список всех файлов старше x дней только в текущем каталоге

Список всех файлов старше x дней только в текущем каталоге

01.12.2015 04:34:13 Просмотров 20 Источник

Я новичок в unix и не смог получить соответствующий результат в других вопросах.

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

  • Список только тех файлов в текущей папке, которые старше 30 лет дни
  • Выходные данные не должны включать каталоги и подкаталоги
  • Это должно перечислить файлы, подобные команде " ls
  • Выходные данные должны выглядеть как file1 file2 file3 ..

Я использовал find . -mtime +30. но это дает файлы и файлы в подкаталогах, а также. Я хотел бы ограничить рекурсивный поиск и не искать внутри каталогов.

Заранее большое спасибо !

У вопроса есть решение - Посмотреть?

Ответы - Список всех файлов старше x дней только в текущем каталоге / List all files older than x days only in current directory

Является ответом!
Andreas Wederbrand

01.12.2015 04:40:22

Вы можете использовать find . -maxdepth 1для исключения подкаталогов.

https://stackoverflow.com/questions/34021732/list-all-files-older-than-x-days-only-in-current-directory/34021861#comment99154619_34021861
найти: неизвестный предикат '- maxdepth=1'
Richasantos

01.12.2015 04:57:04

Вы можете сделать это:

find ./ -maxdepth 1 -type f -mtime +30 -print

Если возникли проблемы, сделайте:

find ./ -depth 1 -type f -mtime +30 -print
A1rPun

24.12.2019 01:36:34

Чтобы добавить ответ @Richasantos:

Это прекрасно работает

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

Печать:

./file1
./file2
./file3

Теперь вы можете связать это с чем угодно. Допустим, вы хотите удалить все эти старые файлы.:

$ find . -maxdepth 1 -type f -mtime +30 -print | xargs /bin/rm -f

От man find: `

Если вы передаете вывод find в другую программу и есть малейшая вероятность того, что файлы, которые вы ищете, могут содержать новую строку, то вам следует серьезно рассмотреть возможность использования опции-print0вместо-print.

Итак, используя-print0

$ find . -maxdepth 1 -type f -mtime +30 -print0

Печать (с нулевыми символами между ними):

./file1./file2./file3

И используется таким образом, чтобы удалить эти старые файлы:

$ find . -maxdepth 1 -type f -mtime +30 -print0 | xargs -0 /bin/rm -f
Lefty G Balogh

04.02.2020 06:41:38

Немного другой спин на этом: findневероятно универсальна, вы можете указать размер и время следующим образом:

Здесь вы найдете все журналы, которые старше 4 месяцев и больше, чем 1 Мег. Если вы удалите знак+, он найдет файлы примерно такого размера.

find /var/log -type f -mtime +120 -size +1M
/var/log/anaconda/journal.log
/var/log/ambari-agent/ambari-alerts.log.23
/var/log/ambari-agent/ambari-alerts.log.22
/var/log/ambari-agent/ambari-alerts.log.24
/var/log/ambari-agent/ambari-alerts.log.25
/var/log/ambari-agent/ambari-alerts.log.21
/var/log/ambari-agent/ambari-alerts.log.20
/var/log/ambari-agent/ambari-alerts.log.19

Что еще лучше, вы можете скормить это в ls:

find /var/log -type f -mtime +120 -size +1M -print0 | xargs -0 ls -lh
-rw-r--r--. 1 root root 9.6M Oct  1 13:24 /var/log/ambari-agent/ambari-alerts.log.19
-rw-r--r--. 1 root root 9.6M Sep 27 07:44 /var/log/ambari-agent/ambari-alerts.log.20
-rw-r--r--. 1 root root 9.6M Sep 22 03:32 /var/log/ambari-agent/ambari-alerts.log.21
-rw-r--r--. 1 root root 9.6M Sep 16 23:23 /var/log/ambari-agent/ambari-alerts.log.22
-rw-r--r--. 1 root root 9.6M Sep 11 19:12 /var/log/ambari-agent/ambari-alerts.log.23
-rw-r--r--. 1 root root 9.6M Sep  6 15:02 /var/log/ambari-agent/ambari-alerts.log.24
-rw-r--r--. 1 root root 9.6M Sep  1 10:51 /var/log/ambari-agent/ambari-alerts.log.25
-rw-------. 1 root root 1.8M Mar 11  2019 /var/log/anaconda/journal.log
Закрыть X