mova todos os arquivos, exceto com extensão

mova todos os arquivos, exceto com extensão

Mudei um tar.bz2 dos meus downloads para /usr/src, que é onde gosto de colocar todas as coisas que instalo no meu sistema. Agora extraí o arquivo e quero mover seu conteúdo para/usr/share/icons. Mas não quero mover o próprio tar.bz2:

# 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.

Tentei o seguinte, mas infelizmente 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 procurava, não queria usar find com flags complicadas.

Responder1

Você pode usar a GLOBIGNOREvariável 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 unseta variável para evitar cenários indesejados:

unset GLOBIGNORE

Ou

GLOBIGNORE=

Responder2

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/

Responder3

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

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

Todo o conteúdo, exceto test.tar.gzserá movido para Xtest2a pasta.

informação relacionada