Grundlagen von Linux und der Kommandozeile
$ ls
a.log b.log notes.txt
$ for f in *.log; do mv "$f" "${f%.log}.txt"; doneWelche Dateien liegen nach der obigen Sitzung im Verzeichnis?
- Aa.log.txt, b.log.txt, notes.txt
- BWeiterhin a.log, b.log, notes.txt, wobei die Zeichenkette „.log“ in a.log und b.log durch „.txt“ ersetzt ist
- Ca.txt, b.txt, notes.txt
Antwort und Erläuterung anzeigen
Antwort: C. a.txt, b.txt, notes.txt
for f in *.log legt die zu *.log passenden Dateien a.log und b.log nacheinander in die Variable f und wiederholt den Teil zwischen do und done. ${f%.log} ist der Wert von f ohne das .log am Ende, für a.log also a, und mv "$f" "${f%.log}.txt" benennt a.log in a.txt um. notes.txt passt nicht auf *.log und bleibt unverändert. "$f" steht in doppelten Anführungszeichen, damit ein Name mit Leerzeichen als ein einziges Argument an mv übergeben wird.
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile