У меня есть каталог, содержащий большое количество файлов (например, журналы на каждый день года). Я хотел бы удалить все файлы, созданные до, скажем, 22/11. Как я могу этого достичь? Должен ли я использовать find
тогда exec -rm
? Я использую кш.
26
Ответы:
Использование
find
по-прежнему является предпочтительным способом удаления файлов. Смотрите http://mywiki.wooledge.org/UsingFind для получения дополнительной информации.Один из способов сделать это - создать файл с отметкой времени. например
Теперь удалите файлы GNU
find
(предположим, в текущем каталоге), которые соответствуют отметке времени, например:или не GNU найти
источник
type -f
ограничено только файлами.С GNU или некоторыми BSD
find
:Обратите внимание, что он проверяет время последнего изменения файлов. На некоторых BSD вы можете использовать
-newerBt
вместо,-newermt
чтобы проверить время рождения inode файла, если доступно вместо этого.источник
пример:
В этом случае он удалит все файлы, которые начинаются с "ORA_XEO" более 15 дней.
источник
rm -rf
, первая команда удалит все содержимое любых каталогов старше 15 дней. (Кроме того, почему круглые скобки-name
?)example.jar
- это будет удаленоexample.cp
- это будет удаленоexample.tar
- это не будет удаленоfind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
вы должны использовать-daystart
модификатор, чтобы привести-mtime
значение к полуночи.