Una forma rápida sería modificar el nombre del archivo tux para que su comando de movimiento no coincida.
Por ejemplo:
mv Tux.png .Tux.png
mv * ~/somefolder
mv .Tux.png Tux.png
Pon lo siguiente en tu .bashrc
shopt -s extglob
Extiende las expresiones regulares. Luego puede mover todos los archivos excepto uno
mv !(fileOne) ~/path/newFolder
Excepciones en relación con otros comandos
Tenga en cuenta que, al copiar directorios, no se puede usar el flash de avance en el nombre como se indica en el hilo ¿Por qué extglob excepto romper excepto condición?:
cp -r !(Backups.backupdb) /home/masi/Documents/
entonces Backups.backupdb/
está mal aquí antes de la negación y no lo usaría ni en mover directorios por el riesgo de usar mal luego globs con otros comandos y posibles otras excepciones.
Si usa bash y tiene el extglob
conjunto de opciones de shell (que suele ser el caso):
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/
Iría con la forma tradicional de encontrar y xargs:
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
xargs -0 mv -t ~/Linux/New
-maxdepth 1
hace que no busque recursivamente. Si solo te interesan los archivos, puedes decir -type f
. -mindepth 1
hace que no incluya el ~/Linux/Old
camino en sí mismo en el resultado. Funciona con cualquier nombre de archivo, incluidos aquellos que contienen saltos de línea incrustados.
Un comentario señala que el mv -t
La opción es probablemente una extensión GNU. Para sistemas que no lo tienen
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
-exec mv '{}' ~/Linux/New \;