mover todos los archivos excepto los que tienen extensión

mover todos los archivos excepto los que tienen extensión

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 GLOBIGNOREvariable 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 unsetla 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.gzy test.txt, test2.txtetc. y una carpeta vacía "Xtest2" donde queremos mover todos los archivos excepto .tar.gzentonces:

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

Todo el contenido excepto test.tar.gzse moverá a Xtest2la carpeta.

información relacionada