Cela se déplacera foo.c
vers le nouveau répertoire baz
avec le répertoire parent bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
L' -p
option de mkdir
crée des répertoires intermédiaires selon les besoins.
Sans -p
tous les répertoires, le préfixe du chemin doit déjà exister.
Tout ce qui se trouve à l'intérieur des backticks ``
est exécuté et la sortie est retournée en ligne dans le cadre de votre commande.
Puisque mkdir
ne renvoie rien, seule la sortie de echo $_
sera ajoutée à la commande.
$_
référence le dernier argument à la commande précédemment exécutée.
Dans ce cas, il retournera le chemin de votre nouveau répertoire ( ~/bar/baz/
) passé à la mkdir
commande.
J'ai décompressé une archive sans donner de destination et j'ai voulu déplacer tous les fichiers sauf
demo-app.zip
de mon répertoire actuel vers un nouveau répertoire appelé
demo-app
.
La ligne suivante fait l'affaire:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
renvoie tous les noms de fichiers, y compris les fichiers cachés (à l' exception.
..
des fichiers implicites et ).
Le symbole de canal |
est utilisé pour diriger la sortie de la ls
commande vers grep
( un utilitaire de recherche en texte brut en ligne de commande ).
L' -v
indicateur indique grep
de rechercher et de renvoyer tous les noms de fichiers à l'exclusion demo-app.zip
.
Cette liste de fichiers est ajoutée à notre ligne de commande en tant qu'arguments source de la commande move mv
. L'argument cible est le chemin d'accès au nouveau répertoire transmis à mkdir
référencé à l'aide $_
et la sortie à l'aide echo
.