
Moví un tar.bz2 de mis Descargas a /usr/src, que es donde me gusta colocar todo lo que instalo en mi sistema. Ahora extraje el archivo y quiero mover su contenido a /usr/share/icons. Pero no quiero mover el tar.bz2 en sí:
# 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
En el comando de salida quiero mover todo, además de tar.bz2, dentro de la terminal.
Intenté lo siguiente pero desafortunadamente también mueve el tar.bz2:
mv Comix*[!tar.bz] /usr/local/share
Esperaba que el operador de negación excluyera el archivo que terminaba con tar.bz. La siguiente solución es lo que estaba buscando, no quería usar buscar con indicadores complicados.
Respuesta1
Puedes usar la GLOBIGNORE
variable de bash
:
GLOBIGNORE=ComixCursors-0.8.2.tar.bz2
Ahora ejecuta:
mv ComixCursors* /usr/share/icons/
También tenga en cuenta que cuando haya terminado con la operación, es bueno cambiar unset
la variable para evitar escenarios no deseados:
unset GLOBIGNORE
O
GLOBIGNORE=
Respuesta2
Utilice el viejo find
:
find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
Respuesta3
También hay un comando simple de usar, por ejemplo en su directorio de inicio. tenemos una carpeta "Xtest" que contiene test.tar.gz
y test.txt
, test2.txt
etc. y una carpeta vacía "Xtest2" donde queremos mover todos los archivos excepto .tar.gz
entonces:
cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2
Todo el contenido excepto test.tar.gz
se moverá a Xtest2
la carpeta.