Potrzebuję rekursywnie zmienić nazwę każdego pliku i katalogu. Konwertuję spacje na podkreślniki i zamieniam wszystkie nazwy plików/katalogów na małe. Jak mogę zmienić nazwę wszystkich plików w jednym uruchomieniu? Obecnie skrypt musi być uruchamiany kilka razy, zanim wszystkie pliki/katalogi zostaną przekonwertowane. Kod jest poniżej:Perl: Rekurencyjnie zmień nazwę wszystkich plików i katalogów.
#!/usr/bin/perl
use File::Find;
$input_file_dir = $ARGV[0];
sub process_file {
$clean_name=lc($_);
$clean_name=~s/\s/_/g;
rename($_,$clean_name);
print "file/dir name: $clean_name\n";
}
find(\&process_file, $input_file_dir);
Co powinno się stać, jeśli "Some Filename" i "some_filename" oba istnieją w tym samym katalogu? A dla niepustych katalogów "Some Dir" i "some_dir" z tym samym rodzicem? –
Czy wiesz, że perl pochodzi ze skryptu zmiany nazwy (3)? –
@Pasi: to jest "prename". Z jakiegoś powodu, jak zwykle, Debian postanowił przełamać i zmienić nazwę na "zmień nazwę", zastępując oryginalną zmianę nazwy z userlinux. – Juliano