Пошук файлів, старших за x днів, у системі із відключеним зайнятим кодом


9

Мені потрібно знайти та видалити файли старше 1 тижня у підрозділі розвитку. На цьому пристрої доступна обмежена кількість утиліт. -mtime findпредикат не доступний. Як перевірити в цьому випадку всі файли, старші ніж x днів?


2
Незрозуміло, що ви маєте на увазі під " mtimeне доступно". Це не утиліта, ім'я якої я впізнаю.
Kusalananda

/ path / to / my / folder $ find -type f -mtime +7 видалити find: нерозпізнано: -mtime
Ravi

поділіться дистрибутивом Linux, який ви використовуєте.
Сіва

3
Схоже, це зайнятий без нього FEATURE_FIND_MTIME. Є чи FEATURE_FIND_NEWERвключений? Чи find -newerпрацює? Ваша testутиліта чи [вбудована ваша shпідтримка -nt?
Стефан Шазелас

1
Ви можете touch -ddate +%s[ file -nt other-file ]
подолати

Відповіді:


11

-mtimeє стандартним присудком find(всупереч -delete), але схоже, що у вас вичерпана версія busybox, де FEATURE_FIND_MTIMEфункцію було вимкнено під час збирання.

Якщо ви можете відновити зайняту скриньку, якщо її ввімкнено, ви повинні:

find . -mtime +6 -type f -exec rm -f {} +

Або якщо FEATURE_FIND_DELETEтакож увімкнено:

find . -mtime +6 -type f -delete

Якщо ні, то іншими параметрами може бути використання find -newer(при умові FEATURE_FIND_NEWER, що включено) у файлі, встановленому на тижневий час модифікації.

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

Або , якщо -newerнемає в наявності , але sh«S [підтримує -nt:

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

1
Так, тут зайнята версія була легшою. Після реконструкції find . -mtime +6 -type f -exec rm {} \;працював на мене
Раві

2

Від man find:

-час н

Востаннє доступ до файлу був n * 24 години тому. Коли ви знайдете цифри, скільки 24-годинних періодів тому до цього файлу востаннє зверталися, будь-яка дробова частина ігнорується, тож, щоб відповідати часу +1, файл повинен був отримати доступ щонайменше два дні тому.

-час н

Статус файлу востаннє змінено n * 24 години тому. Перегляньте коментарі до часу, щоб зрозуміти, як округлення впливає на інтерпретацію часу зміни статусу файлу.

Залежно від випадків використання файлів, які ви хочете видалити, це єдині ваші інші варіанти find. Чому його mtimeнемає? Яку файлову систему ви використовуєте? Чи вивчали ви якісь інші варіанти?


Задавати більше запитань до ОП слід як уточнення коментарів , а не відповідей .
Джефф Шаллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.