Nestas situações, há o risco de arquivos com o mesmo nome serem sobrescritos. Como mencionado pelo @Arronical, você pode evitar isso usando o -b
flag para mv
, o que faz com que todos os arquivos com nome idêntico sejam diferenciados, anexando ~
aos seus nomes. No entanto, se houver três ou mais arquivos com o mesmo nome, somente o primeiro e o último serão salvos, portanto, verifique o conteúdo antes de mover para proteger seus arquivos.
O primeiro caso simples é fácil; podemos usar um glob globular. No entanto, isso não moverá arquivos ocultos, portanto, se você tiver qualquer nome de arquivo que comece com .
, comece ativando dotglob
shopt -s dotglob
Então você pode executar:
mv -b /home/smit/test/* /home/smit
rmdir /home/smit/test
Desative dotglob
se quiser (ele retornará ao padrão assim que você abrir um novo shell):
shopt -u dotglob
Para o segundo caso (real), usaremos find
, que move arquivos ocultos por padrão:
Verifique se você está no local certo primeiro.
cd /usr/share/background/all
find -type f -exec echo mv -vb -- {} . \;
Se isso parece bom, execute-o sem echo
para realmente mover arquivos
find -type f -exec mv -vb -- {} . \;
Em seguida, encontre os diretórios
find -type d
Se você vir o que deseja remover:
find -type d -delete
Isso é seguro, pois se recusará a remover diretórios que ainda tenham conteúdo.