Ich habe es folgendermaßen versucht:
rename 'bla bla .txt' blabla.txt
Aber das funktioniert nicht. Wie lautet die richtige Syntax für diesen Fall?
quelle
Ich habe es folgendermaßen versucht:
rename 'bla bla .txt' blabla.txt
Aber das funktioniert nicht. Wie lautet die richtige Syntax für diesen Fall?
Sie sollten nicht rename
nur eine Datei umbenennen, sondern stattdessen mv
(1) .
Um Whitepsace zu entkommen, stellen Sie ihm Folgendes voran \
:
"Ubuntu One"
→ Ubuntu\ One
Ihr Befehl wäre
mv bla\ bla.txt blabla.txt
Der Backslash sagt Bash, dass das nächste Zeichen etwas Besonderes ist, z. B. \a
für 'Glocke', \
für einen wörtlichen Raum und so weiter
siehe man ascii
(7) für mehr
Da Sie jetzt den richtigen Befehl verwenden mv
, können Sie alternativ den Dateinamen angeben, wenn viele Leerzeichen vorhanden sind:
mv "bla bla.txt" blabla.txt
(Dies wäre bla\ \ \ \ bla.txt
in maskierter Form)
In Bash werden Zeichenfolgen in Anführungszeichen (einfache oder doppelte Anführungszeichen) als ein einziges Argument behandelt, während Zeichenfolgen in Anführungszeichen wie folgt in mehrere Argumente aufgeteilt werden:
["mv", "bla", "bla.txt", "blabla.txt", ]
und mv
erwartet:
["mv", "source", "destination", ]
Hinweis: Wenn Sie 'mv' und die ersten Zeichen des Dateinamens eingeben und drücken TAB, erhalten Sie die maskierte Version des Dateinamens, wodurch das Umbenennen schnell und einfach wird.
rename
wird verwendet, um das Umbenennen von Dateien mithilfe eines regulären Ausdrucks stapelweise zu verarbeiten, wie im Beispiel auf der Manpage gezeigt :
rename 's/\.bak$//' *.bak
Zum Entfernen von .bak (am Ende der Zeichenfolge [$]) aus allen Dateien, die mit "* .bak" übereinstimmen.
Umbenennen ist ein spezialisierter Befehl zum Umbenennen von Massen. Was wir normalerweise als "Umbenennen" bezeichnen, ist eigentlich ein "Verschieben" zu einem neuen Namen:
quelle
A=bla ; mv "$A $A .txt" blabla.txt
verschiebt bla bla .txt,A=bla ; mv '$A $A .txt' blabla.txt
sucht aber nach einer Datei mit dem Namen "$ A $ A .txt". Beides funktioniert jedoch für Ihr Beispiel.s ist der Befehl sed Substitute.
\ s ist für whiteSpace
Sie ersetzen durch nichts. Andernfalls wird die Ersatzzeichenfolge nach dem zweiten Schrägstrich verwendet.
g steht für Global, dh ersetzt jede Instanz. Das Weglassen von g ersetzt nur die erste Instanz.
Dieser Befehl ersetzt Leerzeichen in allen Dateien durch Unterstriche:
quelle