bash-Fehler beim umbenennen der Dateien mit Leerzeichen - mv Ziel ist kein Verzeichnis

Ich versuche das umbenennen einer Reihe von Dateien, die Leerzeichen in Ihnen, loszuwerden, die Leerzeichen. Ich dachte, ich fand die richtigen bash Befehl:

for f in *.txt; do mv \"$f\" ${f/ /}; done

Jedoch, diese gibt die Fehlermeldung "mv: Ziel ist kein Verzeichnis" für jede Datei. Wenn ich ersetzen 'mv' mit 'echo mv" in den Befehl, es gibt den richtigen mv-Befehl für jede Datei, und wenn ich geben alle diese mv-Befehle einzeln funktionieren Sie. Zum Beispiel, wenn ich 2 Dateien "ein .txt", und "b".txt", und führen Sie den Befehl oben bekomme ich:

mv: target 'a.txt' is not a directory
mv: target 'b.txt' is not a directory

Wenn ich den Befehl:

for f in *.txt; do echo mv \"$f\" ${f/ /}; done

Bekomme ich:

mv "a .txt" a.txt
mv "b .txt" b.txt

Ich habe einen anderen Weg gefunden, um dies zu tun, verwenden Sie "umbenennen", aber ich würde gerne wissen, warum das nicht funktioniert.

  • Ich Frage mich, wie du das Leerzeichen vor dem .txt, weil Sie nicht akzeptieren. Es wird denke .txt ist kein Verzeichnis
InformationsquelleAutor Jim Hines | 2014-10-23
Schreibe einen Kommentar