Ważne jest, aby zrozumieć, że nie jest to rodzaj „uszkodzenia systemu plików”, fsck
któ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, fsck
powinna 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ą root
i 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 rename
narzę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 rename
róż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 -h
rozróż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 rename
nie obsługuje przełącznika -h. Możesz potwierdzić, że masz poprawny, sprawdzając stronę man rename
podręcznika, w którym to przypadku górna linia będzie zawierać:
RENAME (1) Przewodnik dla programistów Perla RENAME (1)