Ich versuche, eine DVD unter Windows zu brennen, aber es schlägt fehl, weil die volle Länge des Pfadnamens die Grenze von etwa 255 Zeichen überschreitet.
Unsere Dateien werden in Debian Linux gespeichert (auf das Windows mit Samba zugreift). Um zu vermeiden, dass eine zwielichtige Windows-App ausgeführt wird, um lange Pfadnamen zu finden, würde ich sie lieber mit einem Linux-Befehl finden.
Welchen Befehl könnte ich ausführen, um eine Liste der relativen Pfad- und Dateinamen für einen bestimmten Ordner auszugeben, sortiert nach der Länge jedes Ordners (in absteigender Reihenfolge)?
Die Ausgabe sollte ungefähr so aussehen:
92 ./site/testapidocs/wjhk/jupload2/policies/class-use/DefaultUploadPolicy_WithoutAlertBox.ht
83 ./site/testapidocs/wjhk/jupload2/upload/class-use/PacketConstructionThreadTest.html
76 ./site/apidocs/wjhk/jupload2/upload/helper/class-use/ProgressBarManager.html
52 ./site/xref/wjhk/jupload2/gui/JUploadFileFilter.html
31 ./site/samples.java/applet.jnlp
17 ./site/index.html
quelle
find -E . -regex ".{255,}"
Pfade verwenden, um relative Pfade> = 253 Zeichen aufzulisten. 255 ist die maximale Anzahl von Wiederholungen, die von der RegEx-Engine der integrierten Suche unterstützt wird.Ich habe zwei Möglichkeiten gefunden, dies zu tun:
Bei meinem ersten Versuch ( find. | Perl -pe 'print length;' | sort -rn | less ) mit dem Befehl perl wurde eine um eins zu hohe Zeichenanzahl gemeldet, da ich denke, dass die Anzahl der Zeilen ein Zeilenumbruchzeichen enthält. Es kann wahrscheinlich sauberer gemacht werden als meine obige Methode, aber ich habe das Ergebnis erhalten, das ich brauchte.
quelle
perl -l -pe 'print length'
:-l
Die Marke Perl entfernt automatisch das Zeilenumbruchzeichen.