我无法删除网络驱动器(文件系统: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
) 就足够了。