Cópia em lote / mover arquivos em unix?

4

Existe uma maneira de copiar / mover arquivos em lote no Unix? Eu pensei que poderia ser uma opção para cp/mv , mas não consigo encontrar nenhuma maneira de fazê-lo.

    
por rake 06.05.2012 / 19:28

2 respostas

5

cp e mv são boas ferramentas para copiar arquivos e mover arquivos, respectivamente. Combinados com construções de shell (loops como for file in *; do ...; done ) ou find , eles se tornam ainda mais poderosos.

Se entendi seu objetivo corretamente, você extraiu arquivos como:

somedir/file.png
somedir/file.txt

e deseja mover todos os arquivos para o diretório pai de modo que pareça:

file.png
file.txt

Usando curingas do shell, supondo que você esteja no diretório somedir , você pode usar:

mv * ../

* é um padrão glob que se expande para todos os arquivos no diretório atual. Se você tiver arquivos ocultos (arquivos e diretórios com um . no nome do arquivo), use shopt -s dotglob in bash ).

Mencionei find antes. Se você tem uma árvore de arquivos como:

somedir/000.txt
somedir/a/001.txt
somedir/a/004.txt
somedir/b/003.txt
somedir/b/002.txt
somedir/whatever/somethingunique.txt

e deseja mover todos os arquivos em um diretório (digamos, seconddir ), use:

find -exec mv {} seconddir/ \;

Isso pressupõe que todos os nomes de arquivos sejam exclusivos, caso contrário, os arquivos seriam sobrescritos.

    
por 06.05.2012 / 21:25
0

Você pode se dar bem com renomear como é mais apto ao processamento em lote.

    
por 06.05.2012 / 21:39