Czyszczenie plików ze znaku �

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ń :slight_smile:

:~/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 :wink:
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ą.