Datei mit komischem Namen beim Samba-Mount umbenennen

Datei mit komischem Namen beim Samba-Mount umbenennen

Ich möchte eine Datei mit einem komischen Namen in einen sinnvollen umbenennen, aber ich kann das nicht :/

$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

Ich habe versucht, die Inode-Nummer zu verwenden, wie an einigen Stellen im Internet empfohlen wurde:

$ ls -il *000c.jpg
ls: '?j?Z?R?C1_000c.jpg': No such file or directory
213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21  2012 '?j?Z?R?C1_000c.jpg'
$ find . -inum 213915 -print0 | xargs -0 -I '{}' mv '{}' 000c.jpg
mv: cannot move './?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

Was soll ich machen?

Antwort1

Zusammenfassung der relevanten Kommentare:

Unix-Dateisysteme erlauben alle Zeichen in einem Dateinamen außer \0(Nul) und /(Schrägstrich). Die Tatsache, dass lsFragezeichen angezeigt werden, liegt nur daran, dass einige Zeichen des Dateinamens in der aktuellen Ländereinstellung nicht angezeigt werden können (was einer der Gründe ist, warumSie sollten das Parsen der Ausgabe vonls).

Bei einer Samba-Freigabe gelten jedoch offenbar strengere Anforderungen an die Dateinamen als bei einem Standard-Unix-Dateisystem.

Da die Datei auf Ihrer temporären Samba-Freigabe einen „unzulässigen“ Namen hatte, war die Datei auf dem Computer, auf dem die Freigabe bereitgestellt wurde, unter ihrem korrekten Namen nicht zugänglich.

Dies mvfunktionierte nicht, da der von der Samba-Freigabe für die Erweiterung des Globbing-Musters zurückgegebene Name nicht der tatsächliche Name der Datei im Host-Dateisystem war, sondern nur Sambas eigene entstellte Version des Namens.

Ihre Lösung bestand darin, sich beim Server anzumelden, auf dem die Datei tatsächlich gehostet wurde (auf einem Dateisystem mit weniger restriktiven Benennungsregeln als Samba) und dort den Namen der Datei zu ändern. Dies war die richtige Vorgehensweise.

Siehe auch Unix&LinuxChatten Sie über diese Frage.

Antwort2

Bevor ich das Zitieren in Unix-Shells gelernt habe, habe ich den Emacs- diredModus verwendet, um schwer zuzuordnende Dateien umzubenennen oder zu löschen. Dazu öffnen Sie einfach das Verzeichnis in Emacs:

emacs -q .

... dann können Sie mit den Pfeiltasten zu der Datei navigieren, die Sie ändern möchten, und die Datei mit umbenennen R. ?Sie erhalten eine Liste der verfügbaren Befehle (Sie können auch schwer zuzuordnende Dateien löschen).

Dann C-x C-cverlassen Sie einfach Emacs und sind fertig.

Antwort3

Bei ungewöhnlichen Dateinamen können Sie häufig "./" vor den Dateinamen setzen, damit Linux ihn richtig erkennt. Beispiel: $ ls ./?j?Z?R?C1_000c.jpg

verwandte Informationen