Como mover apenas arquivos no Unix

16

Como posso mover apenas os arquivos simples (não os diretórios) de uma pasta no Linux para outra pasta usando o comando mv ?

Eu tentei mv * ~/ , mas copiei tudo, inclusive os diretórios.

    
por Scott 04.11.2009 / 16:26

5 respostas

24

Você pode tentar

find . -maxdepth 1 -type f -exec mv {} destination_path \;
    
por 04.11.2009 / 19:23
5

Eu sou um tipo de "usar um martelo para tudo", então eu uso programas shell da 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 o mínimo de digitação possível, mas eu sou um datilógrafo bastante rápido e eu tenho coisas assim embutidas no meu cérebro, então não é muito doloroso fazer isso em vez de olhar os argumentos exatos para encontrar e exec e tudo isso.

YMMV, embora ...

    
por 04.11.2009 / 17:06
2

@Meghost é muito próximo. Aqui está o que eu tenho para mover todos os arquivos (incluindo arquivos ocultos), mas não os diretórios:

find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;

O . after find assume que o diretório atual é a origem dos arquivos que você deseja mover. Caso contrário, o comando pode ser revisado da seguinte forma:

find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;

Se você quiser mover apenas arquivos comuns 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 arquivos comuns:

find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
    
por 15.07.2015 / 21:14
-1

você pode usar o find

find * -maxdepth 1 -type f -exec mv {} ~ \;
    
por 04.11.2009 / 16:28
-2

mv 'encontra ./sourcedir/* -type f' ./destdir

    
por 08.03.2013 / 20:58