Ich habe einen Ordner, der automatisch erstellt wurde. Der Benutzer hat unbeabsichtigt intelligente (lockige) Anführungszeichen als Teil des Namens angegeben, und der Prozess, der die Eingaben bereinigt, hat diese nicht erfasst. Daher enthält der Ordnername die intelligenten Anführungszeichen. Zum Beispiel:So benennen Sie einen Ordner mit intelligenten Anführungszeichen um
this-is-my-folder’s-name-“Bob”
Ich versuche jetzt umbenennen/entfernen die Ordner in der Befehlszeile, und keine der Standard-Tricks für den Umgang mit Dateien/Ordner mit Sonderzeichen (in Anführungszeichen gesetzt, um die Zeichen zu entkommen, versuchen, es nach Inode umzubenennen usw.) funktionieren. Alle Ergebnisse in:
mv: cannot move this-is-my-folder’s-name-“Bob” to this-is-my-folders-name-BOB: No such file or directory
Kann mir jemand einen Rat geben, wie ich das erreichen kann?
Haben Sie 'rm -i - this-is- *' ausprobiert? – skhan
Ich glaube Backslash Escaping von Sonderzeichen wird das Problem lösen. Verwenden Sie die bash-Shell selbst, um den Namen des Quellordners zu vervollständigen, indem Sie 'tap' drücken, nachdem Sie einige Zeichen des Quellordners eingegeben haben. Geben Sie dann den Namen des Zielordners ein. – Jobin
Sie können immer alle Dateien (oder eine Teilmenge der Dateien) in einem Array globalisieren, z. B. 'files = (this-is-my-folder *)'. Dies erzeugt ein Array 'Dateien'. Untersuchen Sie dieses Array mit 'declare -p files'. Sehen Sie, um welchen Index Ihre Datei geht; zum Beispiel, wenn Sie es bei Index '42' finden, dann wird 'mv -" $ {files [42]} "this-is-my-folders-name-BOB' funktionieren. Übrigens, hat die TAB-Fertigstellung nicht funktioniert? –