Test auf Pfadlänge

Zeige mir alle Dateien unter /usr dessen voller Pfad länger als 255 Zeichen ist:

testpfadlaenge.sh
#!/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:

testpfadlaengemitLeerzeichen.sh
#!/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


zurück