Usando find
+ xargs
+ mv
:
find . -type f -print0 | xargs -0 -I file mv --backup=numbered file .
Isso moverá todos os arquivos no diretório de trabalho atual e seus subdiretórios (recursivamente) para o diretório de trabalho atual, numerando arquivos com o mesmo nome de arquivo numericamente para evitar substituir arquivos com o mesmo nome de arquivo.
Exemplo de resultado em uma pasta tmp
com subpastas 1
, 2
e 3
, cada uma contendo um arquivo 1.ext
, 2.ext
e 3.ext
:
ubuntu@ubuntu:~/tmp$ tree
.
├── 1
│ ├── 1.ext
│ ├── 2.ext
│ └── 3.ext
├── 2
│ ├── 1.ext
│ ├── 2.ext
│ └── 3.ext
└── 3
├── 1.ext
├── 2.ext
└── 3.ext
3 directories, 9 files
ubuntu@ubuntu:~/tmp$ find . -type f -print0 | xargs -0 -I file mv --backup=numbered file .
ubuntu@ubuntu:~/tmp$ tree
.
├── 1
├── 1.ext
├── 1.ext.~1~
├── 1.ext.~2~
├── 2
├── 2.ext
├── 2.ext.~1~
├── 2.ext.~2~
├── 3
├── 3.ext
├── 3.ext.~1~
└── 3.ext.~2~
3 directories, 9 files