Você precisa criar a árvore de diretórios de subdir1/subdir2/
- mv
não fará isso para você. Você poderia fazer, por exemplo:
find . -type f -mtime +5 -print0 | while IFS= read -r -d '' file; do
dir="${file%/*}"
mkdir -p ../rootarchive/"$dir"
mv "$file" ../rootarchive/"$file"
done
Você pode rsync
. Pode recriar a estrutura de diretórios e excluir arquivos copiados:
find . -type f -mtime +5 -print0 |
rsync -0avP --remove-source-files --files-from=- ./ ../rootarchive
Para rsync
:
-
-0
indica que as listas de arquivos são separadas por nulo. Isso afeta: -
--files-from=
lê a lista de arquivos a serem copiados (de stdin:-
). -
-a
ativa o modo de arquivamento, que retém as permissões de arquivo, a propriedade, etc. -
--remove-source-files
exclui arquivos que foram copiados com êxito da origem. -
-vP
ativa o modo detalhado e as informações de progresso.