Miko pisze:dlaczego wyskakuje mi taki komunikat i nie zmienia nazwy?
Kod: Zaznacz cały
#!/bin/bash
NOWA=$(ls "${STARA}" | sed 's/Ĺ\\233/ś/g')
echo "${STARA}" "${NOWA}"
mv "${STARA}" "${NOWA}"
Dzieje się tak dlatego, że próbujesz zrobić
ls na zmiennej $STARA, ale bash nie wie o co chodzi, bo jej nie zdefiniowałeś.
Wyżej
webster nie napisał całego skryptu, tylko ten kawałek, który się różnił od mojego. Musisz dodać tę pętlę
for, czyli cały skrypt wyglądałby tak:
Kod: Zaznacz cały
#!/bin/bash
for STARA in * ; do
NOWA=$(ls "${STARA}" | sed 's/Ĺ\\233/ś/g')
echo "${STARA}" "${NOWA}"
mv "${STARA}" "${NOWA}"
done
Jeśli masz zamiar uruchomić ten skrypt w katalogu, gdzie jest dużo plików, w których nie występuje
Ĺ\\233, to proponuję zmienić linię z
for na:
żeby nie zasypało Ci terminala wiadomościami typu "mv: abc i abc to ten sam plik"