삼바 마운트에서 이상한 이름으로 파일 이름 바꾸기


10

이상한 이름의 파일 이름을 합리적인 이름으로 바꾸고 싶지만 다음과 같이 할 수 없습니다.

$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

인터넷의 몇 곳에서 권장되는 inode 번호를 사용해 보았습니다.

$ 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

어떻게해야합니까?


1
ls해당 디렉토리 의 단순 출력은 무엇입니까 ? 파일이 일반 파일로 표시됩니까? 에 No such file or directory오류가 있고 손상된 파일 시스템을 나타내지 않는지 확인하고 싶습니다 .
terdon

1
파일 시스템을 통해 실행해야하는지 궁금합니다 fsck. 손상되었을 수 있습니다. 파일은 어떻게 그 이름을 얻었습니까?
Kusalananda

1
@Mioriin 파일 이름의 물음표는 표시 할 수없는 문자의 자리 표시 자일 수 있습니다. (의 결과를 분석하지 않는 한 가지 이유 ls)
Kusalananda

1
이것은 터미널 글꼴 문제 일 수 있습니다. 그것은 보여주는 것 ?은 표시 할 수없는 문자에 대해. 완전한 유니 코드 글꼴로 전환 해보십시오.
Mio Rin

5
@Mioriin 파일 이름을 표시 할 수 있는지 여부는이 경우 약간의 청어입니다. 이상한 점은 쉘이 확장 할 수는 *_000c.jpg있지만 mv파일을 처리 할 수 ​​없다는 것입니다. IMHO는 손상된 파일 시스템을 나타냅니다. ... 또는 (아직 디렉토리 항목이 캐시 된 상태로) 사라진 네트워크 공유에 마운트 된 파일 시스템 또는 기타 파일 시스템 일 수 있습니다.
Kusalananda

답변:


16

관련 의견 요약 :

유닉스 파일 시스템은 \0(nul) 및 /(슬래시)를 제외한 파일 이름의 모든 문자를 허용합니다 . ls물음표를 표시 한다는 사실 은 현재 로케일에서 파일 이름의 일부 문자를 표시 할 수 없기 때문입니다 ( 의 출력 구문 분석을 피해야ls 하는 이유 중 하나임 ).

그러나 Samba 공유를 사용하면 표준 Unix 파일 시스템보다 파일 이름에 더 엄격한 요구 사항이 있습니다.

파일의 이름이 중간 Samba 공유에서 "불법"인 이름이므로 공유를 마운트하는 시스템에서 파일의 올바른 이름으로 파일에 액세스 할 수 없습니다.

mv로빙 패턴의 확장을 위해 Samba 공유에서 반환 된 이름이 호스팅 파일 시스템에있는 파일의 실제 이름이 아니고 Samba 자체의 맹 글링 된 버전의 이름이기 때문에 작동하지 않았습니다.

귀하의 솔루션은 실제로 파일을 호스팅 한 서버 (Samba보다 이름 지정 규칙이 덜한 파일 시스템)에 로그인하여 파일 이름을 변경하는 것입니다. 이것은 올바른 행동 과정이었습니다.

이 질문에 대한 Unix & Linux 채팅 도 참조하십시오 .


-2

유닉스 쉘에서 인용하는 법을 배우기 전에 emacs dired모드를 사용 하여 일치하지 않는 파일의 이름을 바꾸거나 삭제합니다. emacs에서 디렉토리를 열기 만하면됩니다.

emacs -q .

... 화살표 키를 사용하여 수정하려는 파일로 이동하여 파일 이름을 바꿀 수 있습니다 R. ?사용 가능한 명령 목록이 표시됩니다 (일치하기 어려운 파일도 삭제할 수 있음).

그런 다음 당신 C-x C-c은 이맥스에서 나가는 길을 마쳤습니다.


-3

비정상적인 파일 이름을 사용하는 경우 파일 이름 앞에 "./"를 추가하면 Linux에서 파일 이름을 제대로 인식합니다. 예를 들면 : $ ls ./?j?Z?R?C1_000c.jpg

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.