
Preciso escrever um script que irá para uma lista de diretórios e, em seguida, mover arquivos do tipo cretin para outro diretório.
Com o código abaixo consigo iterar todas as pastas de um diretório e imprimir seus nomes. Acho que precisarei entrar e sair dessas pastas.
for d in */
do
echo "$d"
done
O código abaixo irá iterar sobre cada arquivo .png e movê-lo para o diretório desejado.
for file in *.png
do
mv "$file" /desired/directory
done
agora, por algum motivo, quando coloco o segundo bloco de código no primeiro, recebo esta saída:
mv: cannot stat ‘*.png’: No such file or directory
Como faço para percorrer e mover cada arquivo? Eu gostaria de colocar este script na raiz do /search/directory/
Responder1
for d in */
do
mv - n *.png /desired/directory/
done
Haverá um problema com arquivos com o mesmo nome que o primeiro será gravado e o seguinte não, pois a tag -n está definida, caso contrário o segundo substituiria o primeiro e perderia o primeiro arquivo. Isso não copiará nenhum arquivo no sub subdiretório
Raspe esse uso
find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/ \;
Mas terá o mesmo problema com arquivos com o mesmo nome
Se você quiser duplicatos com arquivo nomeado, por exemplo. Pic.png 1Pic.png 2Pic.png ect
dup=1
find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/ \;
while(find /search/directory/ -inane "*.png" | wc -l !=0)
find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/$dup$(basename {}) \;
dup++
done
Este loop não será interrompido se /desired/directory estiver em /search/directory. Eu fiz isso de cabeça, a única parte que me preocupa é que a condição while pode precisar do find | wc entre colchetes talvez com $ na frente Isso pode ser melhorado pela verificação de erros e ter .png /search/directory /desired/directory como argumentos
Responder2
Isso deve fazer:
#!/bin/bash
for dir in /full/path/to/recup_Dir.{1..976}; do
mv "$dir"/*.png /full/path/to/desired/directory/
done
Aqui estamos percorrendo os diretórios de origem e copiando todos os .png
arquivos desses diretórios para o diretório desejado. Como estamos usando caminhos absolutos aqui, você pode executar este script de qualquer local.