Как я удаляю файлы, больше, чем определенная дата на Linux

Иногда я извлекаю архив в неправильную папку и хотел бы переместить или удалить недавно извлеченные файлы.

Что самый легкий путь состоит в том, чтобы сделать это через командную строку? Я могу так или иначе искать все файлы, которые являются более новыми, чем время извлечения и канал это в комнату?

Спасибо

4
задан 10.05.2017, 17:52

2 ответа

Править: Как отмечено в комментариях, tar изменяет mtime и ctime извлеченных файлов для соответствия датам в архиве, таким образом, этот первый метод не будет работать если -m флаг использовался во время извлечения. Последний метод оптимален, но может привести к удалению файлов, которые Вы хотите, если имена файлов сталкиваются.

find поддержки a -newer file флаг, указывая его должен найти файлы более новыми, чем файл. touch имеет-t аргумент для изменения получить доступ/изменить времени на файле. Таким образом для фиксации ООП, которые произошли около 19:25:30:

$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp

И если Вы уверены, что отобразил корректные файлы:

$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v

Альтернатива должна удалить все файлы, перечисленные в архиве, который Вы просто извлекли:

$ tar tfz whoops.tar.gz | xargs rm -v
12
ответ дан 07.12.2019, 19:12
  • 1
    вопрос: разве tar не установил бы измененное время на тот из исходных файлов? Не нашел бы использование, которое изменило время (по сравнению со временем изменения?) во время он - сравнение? – ericslaw 27.09.2009, 07:05
  • 2
    HKCU/Control Спасибо!, я использовал последний способ сделать его. Архив был на самом деле zip, таким образом, я сделал zipinfo-1 blah.zip | xargs комната-v – Tarski 27.09.2009, 12:23
  • 3
    @ericslaw Да, который, действительно кажется, имеет место. tar сохранит даты из архивов, если Вы не используете -m флаг. Так, первый метод не будет работать как правило. Синхронизация – Annika Backstrom 27.09.2009, 16:58

Другая альтернатива с находкой:

$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f

где эти +30 являются количеством дней, Вы хотите сохранить.

2
ответ дан 07.12.2019, 19:12

Теги

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