Если вы извлекли файлы в каталог, где вы не изменяли или не перемещали какие-либо файлы за несколько минут до извлечения, вы можете указать извлеченные файлы по их очень недавнему времени ctime. Это не идеально (если каталог содержит извлеченный файл, вы не можете сказать, был ли он создан путем распаковки или существовал раньше (возможно, пустой)), но на практике работает достаточно хорошо.
Следующая команда GNU find перемещает файлы и каталоги в текущем каталоге с ctime менее 2 минут назад в /other/dir
. ls -lctr
может помочь найти подходящее время отключения.
find . -mindepth 1 -maxdepth 1 -cmin -2 -exec mv {} /other/dir \;
Zsh эквивалент:
mv *(cm-3) /other/directory
Следующая команда GNU find перемещает файлы с таким же недавним временем ctime в дереве каталогов с корнем в текущем каталоге в аналогичный путь в /other/dir
.
find . -mindepth 1 -cmin -2 -type f -exec sh -c '
for x; do
mkdir -p "$0/${x%/*}"
mv "$x" "$0/$x"
done
' /other/dir {} +
Эквивалент Zsh (почти: он воспроизводит всю иерархию каталогов, а не только каталоги, которые будут содержать файлы):
autoload zmv
mkdir -p ./**/*(/cm-3:s"|.|/other/dir|")
zmv -Q '(**/)(*)(.cm-3)' /other/dir/'$1$2'