Редактировать: Как отмечено в комментариях, tar
изменяет mtime и ctime извлеченных файлов, чтобы соответствовать датам в архиве, поэтому этот первый метод не будет работать, если во время извлечения не был использован флаг -m
. Последний метод является оптимальным, но может привести к удалению файлов, которые вы хотите, если имена файлов сталкиваются.
find
поддерживает флаг -newer
file
, указывая, что он должен находить файлы новее, чем file. touch
имеет аргумент -t для изменения времени доступа / изменения файла. Итак, чтобы исправить упс, произошедший около 7: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