Удалите все файлы, созданные перед определенной датой

Можно использовать >> для добавления и 2> /dev/null для перенаправления stderr:

mycommand >> outputfile 2> /dev/null

Хотя я подозреваю, что что-то очень похожее уже спросили...

27
06.05.2014, 19:35
3 ответа

Используя find все еще предпочтительный способ удалить файлы. См. http://mywiki.wooledge.org/UsingFind для больше.

Один способ сделать это состоит в том, чтобы создать файл с меткой времени в нем. например,

touch -t 201311220000 /tmp/timestamp

Теперь удалите файлы GNUfind (принимающий в текущем каталоге), которые соответствуют метке времени, например:

find . -type f ! -newer /tmp/timestamp -delete  

или не GNU находят

find . -type f ! -newer /tmp/timestamp -exec rm {} \;
35
27.01.2020, 19:39
  • 1
    Что относительно этого? Это работает? найдите - тип f-mtime +5 - исполнительная комната-f {} \; –  user1058398 27.11.2013, 15:56
  • 2
    @user1058398, Который удалит файлы, более старые, чем 5 дней с этого времени. –  Valentin Bajrami 27.11.2013, 16:23
  • 3
    Это также удаляет папку наряду с файлами? Устаревший @val0x00ff –  alper 15.06.2017, 09:47
  • 4
    @Avatar не, потому что type -f ограничивает действие файлами только. –  Valentin Bajrami 15.06.2017, 11:20

С GNU или некоторым BSD finds:

find . ! -newermt 2013-11-22 ! -type d -delete

Обратите внимание, что это проверяет время последнего изменения файлов. На некотором BSDs можно использовать -newerBt вместо -newermt проверять inode время рождения файла при наличии вместо этого.

23
27.01.2020, 19:39
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;

пример:

find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;

В этом случае будут удалены все файлы, начинающиеся с "ORA_XEO" более 15 дней.

1
27.01.2020, 19:39

Теги

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