Jak sprawnie usunąć znak “�” w nazwach plików?
Na moim domowym serwerku jest parę takich plików.
Macie może pomysł jak za pomocą jednego skryptu/programu odszukać pliki z “�” a potem wykasować w nich ten znak?
:~/test$ ls
���.test.��� ���.test.���_ ���.test.���_abc
:~/test$ rename 's/�/_/g' *
:~/test$ ls
___.test.___ ___.test.____ ___.test.____abc
A jak to wyłuskać w podkatalogach?
Leń
:~/test$ ls
���.test_123 ���.test_456 ���.test_789 ���.test.��� ���.test���.test
:~/test$ cd
:~$ find ./ -maxdepth 2 -name "*�*" -print
./test/���.test.���
./test/���.test_456
./test/���.test_789
./test/���.test_123
./test/���.test���.test
:~$ find ./ -maxdepth 2 -name "*�*" -exec rename 's/�/_/g' {} \;
:~$ ls ./test/
___.test.___ ___.test_123 ___.test_456 ___.test_789 ___.test___.test
Próbuję nabić 10 postów
Tak na serio, to próbowałem zaprzęgnąć do tego
ls
ale to nie był dobry pomysł.
Działa, ale pewnie na pliki bez spacji:
find ./ -maxdepth 25 -name "*�*" -exec rename 's/�/_/g' {} \;
rename: za mało argumentów
Składnia:
rename [opcje] <wyrażenie> <zamiennik> <plik>...
Zmiana nazw plików.
Opcje:
-v, --verbose opisywanie wykonywanych czynności
-s, --symlink działanie na celu dowiązań symbolicznych
-h, --help wyświetlenie tego opisu i zakończenie
-V, --version wypisanie informacji o wersji i zakończenie
Więcej informacji w rename(1).
Jak sobie z tym poradzić?
#!/bin/sh
find ./ -maxdepth 2 -name "*�*" -print | while read -r i; do
mv -v "$i" $(echo $i | sed -e 's/\ /_/g' -e 's/�/_/g')
done
~/test> ls
replace.sh test� test test� test�test�
:~/test> ./replace.sh
renamed './test test�' -> './test_test_'
renamed './test�' -> './test_'
renamed './test�test�' -> './test_test_'
Jest coraz bliżej. Już widzę światełko w tunelu.
Jest jeszcze tylko problem z katalogami ze spacją.
Skrypt zamienia “spację” w nazwach katalogów na “_” i kończy się to:
Nie ma takiego pliku ani katalogu
Thunar: wsadowe zmienianie nazw
Chyba będzie Ci najłatwiej zobaczyć, jakie masz faktycznie nazwy katalogów i plików, a potem ustalić do jakich wartości będziesz chcial je zmeinić.
Dzięki.
Chyba będę lokalizował i zmieniał ręcznie. W sumie rzadko takie pliki się pojawiają.