Zeige mir alle Dateien unter /usr dessen voller Pfad länger als 255 Zeichen ist:
#!/bin/bash # pfad=/usr laenge=255 for f in $(find $pfad -name "*"); do length=` echo ${#f}` if [ $length -gt $laenge ]; then echo $f "laenge " $length fi done
Windows kann nur maximal 255 Zeichen lange Pfade verwalten. Deshalb kommt es oft zu sekundären Problemen.
Dann muss man die Freigabe unter Windows mit einem anderen Laufwerksbuchstaben kürzer neu mappen.
Um diese Dateien unter Linux ermitteln zu können, mappt man die Freigabe auf ein Verzeichnis (SMB / CIFS) und versucht es dann mit dem Script nochmal.
Wenn die Pfade Leerzeichen enthalten, versagt das Script aber.
Deshalb ersetzt das folgende modifizierte Script erstmal alle Leerzeichen mit einer Raute und berechnet dann den Pfad:
#!/bin/bash # pfad=/mnt/meinSMBSrv/Freigabe laenge=271 for f in $(find "$pfad" -name "*"|tr ' ' '#' ); do length=` echo ${#f}` if [ $length -gt $laenge ]; then printf '%s\t%s\n' $length,"$f" fi done