
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 GLOBIGNORE
variá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 unset
a 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.gz
e test.txt
, test2.txt
etc. e uma pasta vazia "Xtest2" para 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 Xtest2
a pasta.