从 CIFS 中删除带冒号的目录

从 CIFS 中删除带冒号的目录

我无法删除网络驱动器(文件系统:CIFS)上包含冒号的目录(使用 Ubuntu)。 我怎样才能删除这个目录呢?(没有root权限,但有读/写权限)

rmdir ':5N0A210'/和的输出rmdir ':5N0A210'

rmdir: failed to remove ':5N0A210': No such file or directory

输出ls -li

123011781 drwxr-sr-x 2 username domain users      0 May 31 10:00 :5N0A210

输出ls -1b

:5N0A210

输出find . -inum 123011781 -delete

find: cannot delete ‘./:5N0A210’: No such file or directory

输出rename 's|:|-|g' *

Can't rename :5N0A210 -5N0A210: No such file or directory

我刚刚意识到我可以创建目录“:test”并且也可以毫无错误地删除。

我还可以创建 ':5N0A210' 并删除它,但它在我刷新 GUI 后立即显示。ls -li显示与之前相同的 inode 编号。

我还可以创建“:4N0A210”(将“5”更改为“4”)并删除它,没有错误。

所有测试均在与“:5N0A210”相同的目录中完成。

答案1

从所在目录:5N0A210

rm -rf ./\:5N0A210

rm -rf ':5N0A210'

rm -rf ./:5N0A210

rm -rf :5N0A210

这些都在我的环境中起作用。

更新

您也可以使用上述命令从服务器端将其删除。如果您无权访问该服务器,请让具有该访问权限的人将其删除。

答案2

Windows 文件名中不允许使用一系列保留字符\ / : * ? " < > |。 CIFS 遵循此规则,这意味着您不能在文件名中使用任何这些字符。

可以配置 SAMBAvfs catia将这些字符转换为视觉上相似的替代字符,但这不是默认设置,并且可能不会在您的实例中进行配置。 (如果是,一个简单的 shell 字符通配符?就足以匹配冒号,即rmdir ?5N0A210。但是您已经尝试过,但失败了。)

唯一的其他解决方案是直接删除托管文件系统的服务器上的目录。如果这是 Windows,则文件系统检查将强制重命名该目录。如果是带有 SAMBA 的 Unix/Linux,那么一个简单的rmdir( 或rm -rf) 就足够了。

相关内容