Сценарий оболочки для проверки возраста файла и его переименования

Se cierra porque el navegador abre una conexión TCP, realiza la transacción HTTP y luego dice "¡Terminé!" que normalmente cerrará la conexión. Como descubrió, el interruptor -kmantendrá abierto kel conector de escucha para futuras conexiones.

1
21.06.2019, 07:32
1 ответ

Чтобы переименовать любой файл старше N дней (N=30 в этом примере ), попробуйте:

find. -type f -mtime +30 -exec sh -c 'mv -i "$1" "$1.old"' MV {} \;

Описанный выше рекурсивный поиск в текущем каталоге. Если вы не хотите, чтобы он опускался в подкаталоги, используйте:

find. -maxdepth 1 -type f -mtime +3 -exec sh -c 'mv -i "$1" "$1.old"' MV {} \;

В целях безопасности вы можете сначала попробовать эту команду и, если вам нравятся результаты, удалитьecho:

find. -maxdepth 1 -type f -mtime +3 -exec sh -c 'echo mv -i "$1" "$1.old"' MV {} \;

Как это работает

  • find.

    Это запускает команду findв текущем каталоге, ..

  • -type f

    Это указывает findискать только обычные файлы.

  • -mtime +30

    Это указывает findискать только файлы старше 30 дней. Замените 30любым номером, который вы хотите.

    Обратите внимание, что, поскольку findимеет особый способ округления возраста файла, точное ограничение для «старше 30 дней» может не соответствовать вашим ожиданиям. Подробности см. в man find.

  • -exec sh -c 'mv -i "$1" "$1.old"' MV {} \;

    Это указывает findзапускать команду mvдля каждого найденного файла. Опция -iсообщает mvинтерактивно запрашивать перед перезаписью существующего файла. Таких вариантов множество. Подробности см. в man mv.

Поиск GNU или аналогичный

Некоторые версии find, такие как GNU find, используют shв вышеупомянутом ненужном (наконечнике шляпы:спешке):

find. -type f -mtime +30 -exec mv -i {} {}.old \;

Это не требуется согласно POSIX и поэтому может быть непереносимым.

0
28.01.2020, 00:08

Теги

Похожие вопросы