Como usar o comando mv para mover apenas os arquivos selecionados? [duplicado]

7

Qual é o comando para mover todos os arquivos para o diretório de destino, exceto *.trg files?

Tentei o comando abaixo, mas não está funcionando:

mv !(*.trg) tgtdir
    
por Prasathraj 30.05.2016 / 08:15

2 respostas

12

Você tem um padrão glob glob, !(*.trg) , que funcionará somente se a opção extglob shell estiver ativada.

Como a saída de shopt extglob mostra:

extglob off

você não tem a opção ativada.

Você precisa ativar extglob em:

shopt -s extglob

Então seu comando deve funcionar.

Além disso, seu comando pode se tornar mais compacto:

mv -t tgtdir !(*.trg|tgtdir)
    
por heemayl 30.05.2016 / 09:09
5

Use find com um argumento -name negado:

find . ! -name '*.trg' ! -name . -maxdepth 1 -exec mv {} <tgtdir> \;

! -name . exclui o diretório atual e -maxdepth 1 garante que apenas os arquivos e diretórios no diretório atual estarão nos resultados da pesquisa.

Assim como no caso de mv , dependendo de onde seu tgtdir existe, talvez seja necessário excluí-lo também.

    
por techraf 30.05.2016 / 08:22