|
[+] bash - zmiana nazw wszystkich plików w folderze
Smerf - 29-01-2008 21:33
Cześć. Chciałem się kiedyś nauczyć programować w bashu ale jakoś nie wyszło. Teraz mam problem. Mam n plików w folderze posortowanych alfabetycznie. Teraz chciałbym im zmienić nazwy, tak że pierwszy plik będzie miał nazwę 1, drugi nazwę 2, ... ,ostatni nazwę n.
Mógłby mi ktoś napisać ten skrypt?
Ja już zacząłem to ręcznie robić.
ilr - 29-01-2008 22:19
Zainteresuj się pakietem mrename.
ultr - 30-01-2008 12:46
Sprawa jest stosunkowo prosta.
Jedynym problemem jest to, że trzeba uważać na nazwy plików, aby się nie powtórzyły. Dla takich plików zmiana plików po kolei nie zadziała: 1, 11, 2 - Plik 11 będzie miał zmienioną nazwę na 2, ale taki plik już istnieje. Dlatego najlepiej przenieść je do tymczasowego katalogu, a na koniec przenieść z powrotem. #!/bin/bash mkdir -p ./$1/.temp n=1 for plik in `find ./$1/ -maxdepth 1 -type f | sort`; do mv "$plik" "./$1/.temp/$n" n=`expr $n + 1` done for plik in `find ./$1/.temp/ -maxdepth 1 -type f`; do mv "$plik" "./$1/" done rmdir ./$1/.temp
Powinno działać. Skrypt należy wywołać ze względną ścieżką do katalogu z plikami do zmiany nazwy.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|