Ważne jest, aby zrozumieć, że nie jest to rodzaj „uszkodzenia systemu plików”, fsckktóry pomoże. Jeśli chodzi o system plików, nazwy plików mogą być dowolną sekwencją bajtów , o ile żaden pojedynczy bajt nie ma wartości 0x00 (ASCII NUL, znacznik końca łańcucha C) lub 0x2F ( /separator katalogu). (Jeśli nazwa pliku ma wbudowany bajt 00 lub 2F, fsckpowinna to naprawić).
Zamiast tego mamy nazwy plików, które według oprogramowania (Dolphin ls) zawierają znaki, których nie można wyświetlić w „ustawieniach regionalnych”, dlatego zastępuje je znakami zastępczymi. Nie możesz również wpisywać tych znaków, więc manipulowanie plikami jest trudniejsze, ale możesz to robić tak długo, jak to robisz, bez wpisywania, kopiowania i wklejania nazwy. Na przykład, jeśli usuniesz lub zmienisz nazwę plików problemów bezpośrednio z Dolphin, powinno to po prostu działać (posunąłbym się do stwierdzenia, że jeśli to nie działa, to jest błąd w Dolphin).
Jeśli musisz coś z nimi zrobić z powłoki (na przykład, jeśli są one własnością rooti dlatego nie mogą być modyfikowane przez program GUI), możesz nazwać je pośrednio za pomocą wzorców „glob”, które zostaną rozwinięte do prawidłowej sekwencji (s) bajtów i przekazywane dalej.
Teraz oczywiście nie chcesz przypadkowo usuwać elementów, ponieważ wzorzec globu jest zbyt dopasowany, dlatego zalecam użycie renamenarzędzia Perl do konwersji każdej nazwy pliku na kodowanie szesnastkowe:
$ rename '$_ = unpack("H*", $_)' *
Nie niszczy to żadnych informacji - ani sam plik, ani jakiekolwiek znaczenie mogło być pierwotnie zakodowane w nazwie pliku, zanim zostanie on zniekształcony. Można go cofnąć dla określonych plików za pomocą np
$ rename '$_ = pack("H*", $_)' 696d706f7274616e742e646f63
Uwaga: istnieją dwa programy o renameróżnych nazwach ; powyższe polecenia będą działać tylko z tym, które pochodzi z Perla. W Ubuntu ten, którego potrzebujesz, to ten z pakietu „zmień nazwę”, a nie ten z pakietu „util-linux”. rename -hrozróżni: to jest to, czego chcesz ...
$ rename -h
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E perlexpr]*|perlexpr
[ files ]
# ...
... nie tego chcesz ...
$ rename -h
Usage:
rename [options] <expression> <replacement> <file>...
# ...
Kluczową sprawą jest „perlexpr”. Być może masz starszą wersję zmiany nazwy Perla, która nie rozumie wszystkich powyższych opcji, ale polecenie, które pokazałem, powinno nadal działać.
Edycja: poniżej 14.04 .5 dołączony skrypt perla renamenie obsługuje przełącznika -h. Możesz potwierdzić, że masz poprawny, sprawdzając stronę man renamepodręcznika, w którym to przypadku górna linia będzie zawierać:
RENAME (1) Przewodnik dla programistów Perla RENAME (1)