Como posso mover apenas os arquivos simples (não os diretórios) de uma pasta no Linux para outra pasta usando o mv
comando?
Eu tentei mv * ~/
, mas ele copiou tudo, incluindo os diretórios.
Como posso mover apenas os arquivos simples (não os diretórios) de uma pasta no Linux para outra pasta usando o mv
comando?
Eu tentei mv * ~/
, mas ele copiou tudo, incluindo os diretórios.
Respostas:
Podes tentar
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Eu sou do tipo "use um martelo para tudo", então eu uso programas de shell bourne para coisas que outros usam programas externos para ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Algumas pessoas gostam de fazer as coisas com a menor digitação possível, mas eu sou uma datilógrafa bem rápida e tenho coisas assim embutidas no meu cérebro, então não é muito doloroso fazer isso em vez de procurar exatamente argumentos para encontrar e exec e tudo isso.
YMMV, no entanto ...
@Mereghost está muito perto. Aqui está o que eu consigo mover todos os arquivos (incluindo arquivos ocultos), mas não os diretórios:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
A .
localização posterior assume que o diretório atual é a fonte dos arquivos que você deseja mover. Caso contrário, o comando pode ser revisado, da seguinte maneira:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Se você deseja mover apenas arquivos regulares e não arquivos ocultos:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Se você deseja mover apenas arquivos ocultos e não regulares:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
você pode usar o find
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
a -exec
opção é a melhor maneira de evitar o problema.