Bases de Linux et de la ligne de commande
$ ls
a.log b.log notes.txt
$ for f in *.log; do mv "$f" "${f%.log}.txt"; doneQuels fichiers se trouvent dans le répertoire après la session ci-dessus ?
- Aa.log.txt, b.log.txt, notes.txt
- BToujours a.log, b.log, notes.txt, mais la chaîne « .log » contenue dans a.log et b.log est remplacée par « .txt »
- Ca.txt, b.txt, notes.txt
Afficher la réponse et l'explication
Réponse : C. a.txt, b.txt, notes.txt
for f in *.log place tour à tour dans la variable f les fichiers a.log et b.log, qui correspondent à *.log, et répète la partie située entre do et done. ${f%.log} est la valeur de f privée du .log final : pour a.log, c'est a, et mv "$f" "${f%.log}.txt" renomme a.log en a.txt. notes.txt ne correspond pas à *.log et reste tel quel. "$f" est placé entre guillemets doubles pour qu'un nom contenant des espaces soit transmis à mv comme un seul argument.
Continuer : 9 autres questions sur Bases de Linux et de la ligne de commande