파일 이름에 인코딩 문제가 있는 파일이 여러 개 있습니다(독일어 움라우트, Windows에서 CD로 굽고 Windows에서 읽고 Seafile을 사용하여 Linux와 동기화합니다. 뭔가 잘못되었습니다...). Bash와 zsh는 움라우트 대신 "?"만 표시합니다. stat
표시는 비슷합니다.
$ stat Erg�nzung.doc
File: ‘Erg\344nzung.doc’
Size: 2609152 Blocks: 5096 IO Block: 4096 regular file
Device: 806h/2054d Inode: 12321475 Links: 1
자동 완성을 통해서만 파일 이름을 입력할 수 있습니다. 이 파일의 이름을 어떻게 바꿀 수 있나요? LibreOffice(또는 다른 파일 형식을 위한 다른 프로그램)는 영향을 받는 파일을 읽을 수 없는 것처럼 보이며 "해당 파일이나 장치가 없습니다"라고 불평합니다.
저도 생각해봤는데 스위치 mv --by-inode 12321475 Ergänzung.doc
가 없더라구요 . 또 무엇을 할 수 있나요?--by-inode
mv
답변1
당신은 시도 할 수 있습니다:
find . -inum 12321475 -exec mv {} new-filename \;
또는
find . -inum 12321475 -print0 | xargs -0 mv -t new-filename
일반적으로 나는 exec보다 xargs를 선호합니다. 구글 왜요? 하지만 까다 롭습니다. 바라보다xargs를 사용하여 -exec +를 찾으세요. 어느 것을 선택할까요?
답변2
convmv
이러한 문제에 대한 유틸리티가 있습니다. 파일 이름 인코딩을 Windows에서 cp1256
utf8 등으로 변경할 수 있습니다 .
답변3
기록에 대해서만 올바른 xargs -0
사용법은 다음과 같습니다.
find . -inum 12321475 -print0 | xargs -0 -I '{}' mv '{}' new-filename
그러나 이미 지적했듯이 어쨌든 그럴 필요는 없습니다.