我有一个文件,其名称中有一些 Unicode 字符,这些字符甚至无法在控制台中正确显示,也无法被实用find
程序正确处理。我最好重命名,但如果这不可能,至少删除有问题的文件。我见过这样的问题如何删除文件名有 utf-8 字符问题的文件我已经尝试了几乎所有能找到的答案 - 但它们都导致要么find
使用-delete
,-exec
要么-print0 | xargs ...
- 而且这些都不起作用。
为了说明我的意思:
root@pc:/media/dot_sent/MacHD/Users/<snip>/англ3# ls -li
ls: cannot access 'КОГДА ❓ ??.docx': No such file or directory
total 0
? -????????? ? ? ? ? ? 'КОГДА ❓ ??.docx'
root@pc:/media/dot_sent/MacHD/Users/<snip>/англ3#
因此,它无法被访问ls
,rm
或者几乎任何其他东西,甚至find
:
root@pc:/media/dot_sent/MacHD/Users/<snip>/англ3# find . -type f -delete
find: cannot delete ‘./КОГДА ❓ ??.docx’: No such file or directory
我唯一的成功是找到了这个文件的 inode:
root@pc:/media/dot_sent/MacHD/Users/<snip>/англ3# find . -type f -printf '%i\n'
8215743
但即使这样也无济于事:
root@pc:/media/dot_sent/MacHD/Users/<snip>/англ3# find . -inum 8215743 -exec rm {} \;
rm: cannot remove './КОГДА ❓ ??.docx': No such file or directory
还有几点:
- 我使用的是 Ubuntu 18.04.6 LTS
- 该文件位于旧的 MacOS 的 HFS+ 文件系统上(在物理连接到我的 Linux 机箱的旧 Macbook 驱动器上)。
- 我确实在这个驱动器上运行了正确版本
fsck
并且没有发现任何问题。
答案1
@choroba 是正确的 - 这 ? -????????? ? ? ? ?
是一个问题 - 由不安全或不正确的 FUSE umount 引起 - 您可能需要在 mount 命令中添加一些其他参数以允许重新连接(或者有时您需要删除一些导致问题的额外参数)