Se você extraiu os arquivos em um diretório em que você não modificou ou moveu nenhum arquivo por alguns minutos antes da extração, é possível informar os arquivos extraídos pelo seu recente ctime . Isso não é perfeito (se um diretório contém um arquivo extraído, você não pode dizer se ele foi criado por descompactar ou já existia antes (talvez estar vazio)), mas funciona razoavelmente bem na prática.
O seguinte comando GNU find move arquivos e diretórios no diretório atual cuja ctime está há menos de 2 minutos para /other/dir
. ls -lctr
pode ajudar a encontrar um tempo de corte adequado.
find . -mindepth 1 -maxdepth 1 -cmin -2 -exec mv {} /other/dir \;
Equivalente a Zsh:
mv *(cm-3) /other/directory
O seguinte comando GNU find move arquivos com um ctime recente semelhante na árvore de diretórios com raiz no diretório atual para um caminho similar em /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 equivalente (quase: este reproduz toda a hierarquia de diretórios, não apenas os diretórios que conterão arquivos):
autoload zmv
mkdir -p ./**/*(/cm-3:s"|.|/other/dir|")
zmv -Q '(**/)(*)(.cm-3)' /other/dir/'$1$2'