web-dev-qa-db-fra.com

déplacer tous les fichiers sauf avec l'extension

J'ai déplacé un fichier tar.bz2 de mes téléchargements vers/usr/src, où j'aime mettre tout ce que j'installe sur mon système. Maintenant, j'ai extrait le fichier et je veux déplacer son contenu vers/usr/share/icons. Mais je ne veux pas déplacer le tar.bz2 lui-même:

# 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

Dans la commande de sortie, je veux tout déplacer à part le tar.bz2, dans le terminal.

J'ai essayé ce qui suit mais malheureusement, il déplace également le tar.bz2:

 mv Comix*[!tar.bz] /usr/local/share

Je m'attendais à ce que l'opérateur de négation exclue le fichier se terminant par tar.bz. La solution ci-dessous est ce que je cherchais, je ne voulais pas utiliser find avec des drapeaux compliqués.

1
Donato

Vous pouvez utiliser la variable GLOBIGNORE de bash:

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

Maintenant, lancez:

mv ComixCursors* /usr/share/icons/

Notez également que lorsque vous avez terminé l'opération, il est bon de unset la variable pour éviter les scénarios indésirables:

unset GLOBIGNORE

Ou

GLOBIGNORE=
2
heemayl

Utilisez le bon vieux find:

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
1
A.B.

Il existe également une commande simple à utiliser, par exemple dans votre répertoire personnel. nous avons un dossier "Xtest" qui contient test.tar.gz et test.txt, test2.txt etc. et un dossier vide "Xtest2" où nous voulons déplacer tous les fichiers sauf .tar.gz puis:

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

Tout le contenu sauf test.tar.gz sera déplacé vers Xtest2 dossier.

0
JoKeR