Wyszukanie najdłuższych nazw folderów

0

Wiem, że nie warto jest dawać zbyt dużo folderów (zbyt długa ścieżka) i są tam pewne limity dotyczące długości nazw, ale chciałbym zapytać - czy jest jakaś opcja, aby sprawdzić te najdłuższe nazwy folderów - tak aby sobie je skrócić (lub alternatywnie też czy jest jakiś automat, który może to zrobić za mnie). Chodzi o jasny fakt - że podczas przegrywania np. z dysku na dysk - te długie nazwy (chyba tylko folderów) są pomijane. Jedynym ratunkiem jest na to takie coś jak po prostu na koniec zapisanie sobie które to są za długie, ale jeśli ich jest bardzo dużo to nie jest to najkrótsza czynność.

2
#!/usr/bin/perl

my $maxpath = 70;
my @stack = ("/");
while(@stack) {
    my ($path) = shift @stack;
    for my $chld (glob("$path/*")) {
        if(length $chld > $maxpath) {
            print "$chld\n";
        } elsif (-d $chld) {
            push @stack, $chld;
        }
    }
}

Na windowsie pewnie musisz zmienić w 4 linii / na C:\\ czy coś takiego. Program wypisze ścieżki dostępu dłuższe niż $maxpath; jeśli są to katalogi, pominie ich treści. Jak rozumiem o to ci chodziło. Jeśli chciałbyś sprawdzać długość samych nazw trzeba by je wyciągnąć z nazwy

$path =~ m#/([^/]+)$#;
if(length ($1//$path) > $maxpath) {

I pewnie też zmniejszyć wartość progową $maxpath, zmienić jej nazwę, etc.

Co do ucinania zbyt długich nazw (ale też zbyt dużych plików) to takie coś może nastąpić jeśli przegrywasz pliki między różnymi systemami plików, np. z NTFS na FAT32. Jeśli się upewnisz, że kopiujesz na taki sam (lub nowocześniejszy) system plików to nie powinno być problemu. W razie czego rozwiązaniem jest stworzenie archiwum (np. zip)

1 użytkowników online, w tym zalogowanych: 0, gości: 1