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 será como a marca -n está definida, caso contrário, o segundo substituirá o primeiro e a perda do primeiro arquivo. Isso não copiará nenhum arquivo no sub-diretório
Raspe esse uso
find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/ \;
Mas terá o mesmo problema com arquivos de mesmo nome
Se você quiser duplicar o 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
Esse loop não será quebrado se o diretório / desired / estiver no diretório / search /. Eu fiz isso fora do topo da minha cabeça a única parte que eu estou preocupado com o tempo pode precisar do achado | wc entre parênteses talvez com $ na frente Isso poderia ser melhorado ainda mais pela verificação de erros e ter o diretório .png / search / directory / desired / como argumentos