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ć.
[+] bash - zmiana nazw wszystkich plików w folderze
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.
Powinno działać. Skrypt należy wywołać ze względną ścieżką do katalogu z plikami do zmiany nazwy.
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.
Kod: Zaznacz cały
#!/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