move todos os arquivos, exceto com extensão [duplicate]

1

Eu movi um tar.bz2 dos meus Downloads para / usr / src, que é onde eu gosto de colocar todas as coisas que eu instalo no meu sistema. Agora eu extraí o arquivo e quero mover seu conteúdo para / usr / share / icons. Mas eu não quero mover o tar.bz2 em si:

# ls -l | grep Comix
-rw-rw-r--  1 guarddog guarddog   2190951 May 26 11:03 ComixCursors-0.8.2.tar.bz2
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Black
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Blue
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Green
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Orange

No comando de saída, quero mover tudo além do tar.bz2, dentro do terminal.

Eu tentei o seguinte, mas infelizmente ele também move o tar.bz2:

 mv Comix*[!tar.bz] /usr/local/share

Eu esperava que o operador de negação excluísse o arquivo que termina com tar.bz. A solução abaixo é o que eu estava procurando, não queria usar o find com flags complicados.

    
por Donato 26.05.2015 / 17:29

3 respostas

2

Você pode usar a variável GLOBIGNORE de bash :

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

Agora execute:

mv ComixCursors* /usr/share/icons/

Observe também que quando você terminar a operação, é bom usar unset da variável para evitar cenários indesejados:

unset GLOBIGNORE

Ou

GLOBIGNORE=
    
por heemayl 26.05.2015 / 17:33
1

Use o bom e velho find :

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
    
por A.B. 26.05.2015 / 17:41
0

Há também um comando simples para usar, por exemplo, em seu diretório de usuário. temos uma pasta "Xtest" que contém test.tar.gz e test.txt , test2.txt etc. e uma pasta vazia "Xtest2" onde queremos mover todos os arquivos exceto .tar.gz então:

cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2

Todo o conteúdo, exceto test.tar.gz , será movido para a pasta Xtest2 .

    
por JoKeR 26.05.2015 / 19:52