Ich habe eine Reihe von Dateien mit Leerzeichen benannt und möchte das Leerzeichen durch ersetzen _
. Jedes Mal, wenn ich einen Befehl mit dem Dateinamen (z. B. Spring 2011
) in die Shell schreibe , erkennt die Shell die Datei oder das Verzeichnis nicht.
Was kann ich dagegen tun? Gibt es eine Möglichkeit, das Unicode-Zeichen für ein Leerzeichen zu verwenden?
bash
for-Schleife ( siehe meine Lösung hier) .Antworten:
Entfliehen Sie dem Raum zB
Spring\ 2011
oder verwenden Sie Anführungszeichen, zB'Spring 2011'
. In Zukunft ist es normalerweise eine schlechte Idee, Dateinamen mit Leerzeichen auf einem beliebigen * NIX zu verwenden.Wenn Sie haben
rename
, können Sie dies verwenden:quelle
rename
Version 2.23)Wenn Ihr Computer über den Befehl zum Umbenennen verfügt , werden alle Leerzeichen in allen Dateien / Verzeichnissen im aktuellen Arbeitsverzeichnis in Unterstriche umgewandelt:
quelle
rename --version
rename from util-linux 2.23.2
.Wenn Sie nicht
rename
nur die Shell haben oder bevorzugen:Heruntergebrochen:
*\ *
Wählt alle Dateien mit einem Leerzeichen im Namen als Eingabe für diefor
Schleife aus."$f"
sind wichtig, da wir wissen, dass der Dateiname ein Leerzeichen enthält und es sonst als Argumente für 2+ erscheinen würdemv
.${f//str/new_str}
ist eine bash-spezifische Funktion zum Ersetzen von Zeichenfolgen. Alle Instanzen vonstr
werden durch ersetztnew_str
.quelle
for f in *\ *; do mv "$f" "${f// /_}"; done
funktioniertmv "Spring 2011.file" Spring_2011.file
sollte die Befehlszeile anweisen, die Zeichenfolge in Anführungszeichen als einzelne Eingabe zu nehmen.quelle
Um N-Dateien programmgesteuert umzubenennen, können Sie eine einfache
bash
for-Schleife verwenden.Wenn Sie weniger als 5 Dateinamen haben, können Sie alle Dateinamen manuell eingeben und den
rename
Befehl wie in der obigen Lösung vorgeschlagen verwenden . Aber für mich ... ich bevorzuge die programmatische Lösung ... auch wenn es nur 4 Dateien gibt.ps
Wenn Sie nicht mit
Bash
der Parametererweiterung von vertraut sind , können${filename// /_}
Sie den folgendenrename
Befehl verwenden:quelle