Chcę zmienić nazwę pliku z dziwną nazwą na coś rozsądnego, jednak nie jestem w stanie: /
$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory
Próbowałem użyć numeru i-węzła, jak zalecono w kilku miejscach w Internecie:
$ ls -il *000c.jpg
ls: '?j?Z?R?C1_000c.jpg': No such file or directory
213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21 2012 '?j?Z?R?C1_000c.jpg'
$ find . -inum 213915 -print0 | xargs -0 -I '{}' mv '{}' 000c.jpg
mv: cannot move './?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory
Co powinienem zrobić?
ls
w tym katalogu? Czy plik jest wyświetlany jako zwykły plik? Proszę o upewnienie się, żeNo such file or directory
jest to błąd globowania i nie świadczy o uszkodzeniu systemu plików.fsck
? Mogę być zepsuty. W jaki sposób plik uzyskał tę nazwę?ls
)?
litery, których nie można wyświetlić. Spróbuj przełączyć się na czcionkę w pełni Unicode.*_000c.jpg
alemv
wtedy nie może przetworzyć pliku. Oznacza to, IMHO, uszkodzenie systemu plików. ... lub ewentualnie systemu plików zamontowanego na udziale sieciowym, który zniknął (z wciąż buforowanymi wpisami katalogu), lub coś w tym rodzaju.Odpowiedzi:
Podsumowanie odpowiednich komentarzy:
Systemy plików Unix pozwalają na dowolny znak w nazwie pliku oprócz
\0
(nul) i/
(ukośnik). Fakt, żels
wyświetlane są znaki zapytania, jest tylko dlatego, że nie może wyświetlić niektórych znaków nazwy pliku w bieżących ustawieniach narodowych (co jest jednym z powodów, dla których należy unikać analizowania wynikuls
).Jednak w przypadku udziału Samba najwyraźniej masz bardziej rygorystyczne wymagania dotyczące nazw plików niż w przypadku standardowego systemu plików Unix.
Ponieważ plik miał nazwę, która była „nielegalna” na pośrednim udziale Samby, plik był niedostępny z powodu prawidłowej nazwy na komputerze montującym udział.
mv
Nie działa, ponieważ nazwa wrócił z udziału Samba dla ekspansji wzór globowania nie była rzeczywista nazwa pliku w systemie plików hosting, tylko Samba własnej zniekształconej wersji nazwy.Rozwiązaniem było zalogowanie się na serwerze, który faktycznie hostował plik (w systemie plików z mniej restrykcyjnymi regułami nazewnictwa niż Samba) i zmiana tam nazwy pliku. To był właściwy sposób działania.
Zobacz także czat Unix i Linux na ten temat .
źródło
Zanim dowiedziałem się o cytowaniu w powłokach unixowych, używałbym
dired
trybu emacsa do zmiany nazwy lub usuwania trudnych do dopasowania plików. Po prostu otwórz katalog w emacs:... możesz użyć klawiszy strzałek, aby przejść do pliku, który chcesz zmodyfikować, i zmienić nazwę pliku
R
.?
poda ci listę dostępnych poleceń (możesz również usunąć pliki, które są trudne do dopasowania).Potem właśnie
C-x C-c
wychodzisz z Emacsa i gotowe.źródło
Często w przypadku nietypowych nazw plików można dodać „./”, zanim nazwa pliku zostanie rozpoznana przez system Linux. Na przykład: $ ls ./?j?Z?R?C1_000c.jpg
źródło