Ich habe ein kleines Problem mit einem sehr hartnäckigen Fehler während eines Rsync. Es wird durch eine Datei mit einem Sonderzeichen im Dateinamen verursacht. Es gab andere, aber ich könnte das klären, indem ich die Kodierung des Dateinamens konvertiere. Allerdings kann ich diese eine Datei nicht einmal finden.
Hier ist also, was rsync sagt:
../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)
Als erstes fällt auf, dass der Zeichencode nicht hexadezimal oder oktal sein kann, also habe ich ihn gegoogelt und nur diesen gefunden . Es kann also ein CURSOR UP
Charakter sein (oder nicht). ich habe es versucht
ls -la *`printf '\033OA'`*
umsonst. Ich habe auch versucht, die Ausgabe von ls dieses Verzeichnisses od
ohne Erfolg weiterzuleiten.
Was kann ich sonst noch tun? Oder welchen Charakter suche ich überhaupt?
Vielen Dank
ls -b
, die C-Stil Fluchten zeigen sollteAntworten:
Sie können die
-b
Option to verwendenls
, die nicht grafische Zeichen als Escape-Sequenzen im C-Stil anzeigt.quelle
ls -aq
druckt alle Dateinamen mit einem?
anstelle jedes nicht druckbaren Zeichens. Bei vielen Unix-Variantenls -AB
oderls -Ab
(überprüfen Sie Ihre Manpage) werden oktale Escapezeichen gedruckt. Mitls -aq
können Sie die angezeigte Ausgabe als Shell-Muster verwenden.Eine andere Möglichkeit, an den Dateinamen zu gelangen, besteht darin, die Vervollständigung Ihrer Shell zu verwenden: Geben Sie ein
mv .
und drücken Sie Tabwiederholt, bis der seltsame Name eingefügt wird.quelle
ls -q
Die Datei wurde nicht angezeigtls -b
. Vielleicht, weil sein Dateiname nicht[weird-character]OA.tex
wirklich war`printf %b '\033OA'`.tex
.
Anfang des Dateinamens steht ein, also brauchen Siels -Aq
oderls -aq
. Und wenn Sie Shell-Platzhalter verwenden, müssen Sie Folgendes.
explizit angeben:*
Die Datei wird nicht eingeschlossen, aber.*
wird.$DESTINATION/.$FILENAME
bevor die Datei auf den richtigen Namen verschoben wird . Daher hatte die Datei an der Quelle.
am Anfang ihres Namens keine . Außerdem hätte, wie gesagt,ls -q
die Datei nicht angezeigt, obwohlls -b
dies der Fall war.