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.
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=
Utilisez le bon vieux find
:
find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
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.