如果查找不起作用,如何删除名称中带有奇怪字符的文件?

如果查找不起作用,如何删除名称中带有奇怪字符的文件?

我有一个文件,其名称中有一些 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# 

因此,它无法被访问lsrm或者几乎任何其他东西,甚至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 命令中添加一些其他参数以允许重新连接(或者有时您需要删除一些导致问题的额外参数)

相关内容