PDA

View Full Version : Czyszczenie plików ze znaku �



rilicek
13-Apr-2019, 05:53
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?

pbojczuk
13-Apr-2019, 07:16
:~/test$ ls
���.test.��� ���.test.���_ ���.test.���_abc
:~/test$ rename 's/�/_/g' *
:~/test$ ls
___.test.___ ___.test.____ ___.test.____abc

rilicek
13-Apr-2019, 16:44
A jak to wyłuskać w podkatalogach?

pbojczuk
14-Apr-2019, 02:07
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

rilicek
14-Apr-2019, 12:36
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ć?

pbojczuk
15-Apr-2019, 12:45
#!/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_'

rilicek
15-Apr-2019, 13:10
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

pbojczuk
21-Apr-2019, 06:23
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ć.

rilicek
22-Apr-2019, 14:21
Dzięki.

Chyba będę lokalizował i zmieniał ręcznie. W sumie rzadko takie pliki się pojawiają.