如何在 Linux 上访问或删除文件名中带有前导破折号的文件如何在 Linux 上访问或删除文件名中带有前导破折号的文件如何在 Linux 上访问或删除文件名中带有前导破折号的文件如何在 Linux 上访问或删除文件名中带有前导破折号的文件
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上访问或删除文件名中带有前导破折号的文件

某些 Linux 工具会生成文件名中带有前导破折号或连字符 (-) 的文件。或者您的手写程序可能会意外地生成以减号开头的文件名。如果您尝试使用 ls、rm、cp、mv 或 chmod 删除、复制、重命名或以其他方式访问此类文件,您将收到以下错误。


[cmd]: invalid option --

这是因为您的 Linux 系统将文件名中的前导减号解释为命令行选项的一部分,并抛出无效选项或不存在模式错误。

为了在 Linux shell 下处理文件名中的前导破折号,您可以尝试以下两种方法之一。

方法一

由于文件名中的前导减号会在识别文件名时产生歧义,因此您只需在文件名前面添加路径名即可消除这种歧义。例如,如果当前目录中有一个名为 -my.txt 的文件,则可以按如下方式访问它。


$ chmod 600 ./-my.txt
$ rm ./-my.txt

方法二

处理前导连字符的第二种方法是利用特殊参数 --,它被 getopt() 解释为“选项结束”。大多数标准 Linux 命令行实用程序使用 getopt() 来处理命令行参数。当getopt()遇到--时,它会停止选项扫描过程。因此,只需在文件名前面插入 -- 即可明确表明带连字符的文件名不是命令行参数的一部分。


$ chmod -- 600 -my.txt
$ rm -- -my.txt
©2015-2025 艾丽卡 support@alaica.com