我们都知道,在linux删除一个文件可以使用rm命令,但是有一些特殊名称的文件使用普通的rm方式却没法删除,本文介绍linux中删除特殊名称文件的多种方式。

linux文件命名规则

在介绍之前,简单说明一下linux中文件命名规则。文件或目录名由除“/”和空字符“\0”之外的任意ASCII字符序列组成。当然很多操作系统允许更多类型的字符组成文件名。但对于我们来说,不建议使用一些特殊字符来命名文件。不幸的是,我们可能无意中创建了一些特殊名称的文件,或者由程序意外的创建了一些由特殊字符组成的文件,这个时候,要删除它们,似乎没有想象中的那么简单。

删除时带上路径

假设有一个名为-static文件,我们使用普通方式将它删除:

$ rm -static
rm: invalid option -- 's'
Try 'rm ./-static' to remove the file '-static'.
Try 'rm --help' for more information.

非常可惜,这种方式提示出错,并不能成功地删除-static文件。这是为什么?我们知道在linux中,通常以-开头,后面跟一些字符,作为一个命令的选项,而不巧的,-static就被rm命令认为是一个参数选项,更不幸的是,实际上并没有该选项,因此最终提示invalid option — 's',导致-static文件无法删除。

那么有没有什么办法删除呢?我们注意到,除了提示非法选项外,还让我们尝试rm ./-static,是否可以呢?我们试一下:

$ rm ./-static
$

最终发现,我们将-static文件成功删除了。因此得到我们的第一种方式,删除文件时带上路径。

删除时使用 —

前面除了提示让我们使用rm ./-static之外,还让我们使用rm –help获取更多信息,那么我们就看一下:

$ rm --help
(省略部分内容)
To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:rm -- -foorm ./-foo
(省略部分内容)

内容较多,但是可以注意到上面的内容,对于以-开头的文件,提供了两种删除方式,第二种是前面提到的,而第二种,是在删除的文件前面再加–:

$ rm -- -static
$

我们发现这种方式也是可以删除以-开头的文件。

删除时用引号引起来

对于特殊字符,如!*等组成的文件如何删除呢?例如:

$ rm \!*
rm: missing operand
Try 'rm --help' for more information.

对于这种类型的文件,我们需要用引号将文件名包含起来:

$ rm "\!*"
$

这样就可以删除掉了,但是这种方式并不能针对所有该类型的文件,例如,文件名为!*的文件就不能通过这样的方式删除,因为!*是有其他含义的,具体可参看《linux中"!"的惊叹用法,你知道吗?》

增加转义字符删除文件

既然!*无法通过加引号的方式删除,那还有什么办法吗?有!删除时,增加转义字符:

$ rm \!*
$

这样便可以删除。在linux中,很多字符有着特殊的含义,因此当你需要把它当普通字符使用时,就需要在前面加上\转义字符,这和C语言中的转义有点类似。再举个例子,要删除以空格开头的abc文件,可以使用下面的方式:

$ rm \ abc
$

即可成功删除。

按照i节点号删除

很多时候,文件名压根没法输入,因为它们都是一堆乱码。因此也完全无法通过前面介绍的方法进行删除,那还有办法吗?有!通过查找文件的i节点,按照i节点进行删除。

例如:

$ ls -i #找到乱码文件的i节点号
1703907 ç¼?ç¨?ç? ç??é«?æ¸?pdfç??.pdf
$ find ./ -inum 1703907 -exec rm {} \; #或者使用-delete参数

关于find命令用法,可参考《find命令高级用法》。这种通过i节点号进行删除的方式适用于前面所提到的任何类型文件。

这里扩展说几句。在操作系统中,它是如何识别一个文件的呢?它并不是通过文件名,而是通过一个iNode号,即i节点号来识别不同的文件,文件名不过是这个文件其中的一个属性而已。

使用通配符删除

不多解释:

$ rm *.pdf
$

但是这种方式可能存在误删,因为只要文件名结尾为.pdf就会被删除,因此根据实际情况慎重使用。

总结

删除特殊文件名称的方法有很多,总结如下:

  1. 删除时带上路径

  2. 删除时使用 —

  3. 删除时用引号引起来

  4. 使用转义字符辅助删除

  5. 按照i节点号删除

  6. 使用通配符删除

不同类型文件可选择使用上面所提较方便的方式进行删除。

linux中删除特殊名称文件相关推荐

  1. linux删除文件_Linux中删除特殊名称文件的多种方式

    今日分享:我们在肉体的疾病方面花了不少钱,精神的病害方面却没有花什么,现在已经到了时候,我们应该有不平凡的学校.--<瓦尔登湖> 前言 我们都知道,在linux删除一个文件可以使用rm命令 ...

  2. linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...

    在linux中对文件的复制删除移动分别会使用到rm,mv,cp三个命令,下面我来给大家介绍一下rm,mv,cp命令对文件的常规操作吧, 先看实例 删除复制移动文件命令 Linux代码 rm -rf / ...

  3. rm如何在Linux中删除一个大文件

    rm -rf命令是删除文件夹及其内容最快的方式之一. 仅仅一丁点的敲错或无知都可能导致不可恢复的系统崩坏. 下列是一些rm 命令的选项: rm 命令在Linux下通常用来删除文件. rm -r 命令递 ...

  4. Linux中是如何删除特殊名称文件

    在Linux中我的都知道,删除一个目录中的一个或多个文件或目录,可以使用rm命令,可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. 但是我们想,如果想要 ...

  5. linux批量删除指定名称的文件夹

    linux批量删除指定名称的文件夹 find /root/baseline_dataset -name .ipynb_checkpoints | xargs rm -rf find # find 命令 ...

  6. groupdel 删除组_如何在Linux中删除组– groupdel命令

    groupdel 删除组 Linux groupdel command is used to delete a group. This is a very powerful command, so u ...

  7. linux目录权限子目录权限,linux中更改所有子文件和子目录所有者权限

    linux中更改所有子文件和子目录所有者权限,这个需要好好谈谈. Ubuntu中有两个修改命令可以用到,「change mode」&「change owner」 即chmod以及chown,其 ...

  8. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  9. linux 快速删除大量/大文件

    linux 快速删除大量/大文件 经常会测试海量大数据,在不同文件系统下执行列出(list),删除(rm)等操作的执行时间,下面列出了,执行删除50万个文件时,使用不同的命令或者脚本,执行时间! 从上 ...

最新文章

  1. RedHat 年度报告:只索取不贡献的开源消费“大户”不受待见
  2. linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...
  3. 17岁「天才少女」被8所世界名校录取,最终选择MIT计算机系,还说学成后肯定回国...
  4. 比特币的闪电网络正在创建自己的黑客阵营
  5. 眼图在通信系统中有什么意义_悟空CRM:施行CRM系统对汽车行业有什么意义
  6. 大学计算机基础课程报告python-大学计算机基础
  7. C#托管代码与C++非托管代码互相调用二(C++调用C#代码)
  8. 经典mysql语句_经典MYSQL语句
  9. 史无前例的 HTML5 资源参考指南
  10. 剑指Offer 从尾到头打印链表
  11. linux网站权限一直自动关闭,奇妙伞-解决SELinux对网站目录权限控制的不当的问题--网上摘抄集合,记录使用...
  12. Pytorch 入门之数据处理 -- Dataset、Sampler、DataLoader
  13. lg2用计算机怎么算,lg计算器(log计算器在线)
  14. 【WPS表格】一些简单函数
  15. TZOJ 数据结构实验:一元多项式相加
  16. 计算机毕业设计ssm宠物商店信息展示与服务订购系统7q5ic系统+程序+源码+lw+远程部署
  17. 反病毒技术——UTM
  18. MyBatis中大于号以及小于号的表达方式
  19. 刚买的新树莓派怎样用(树莓派新手入门)
  20. 【数据结构】带你细致理解十大排序(附源码)

热门文章

  1. Python打开文件对话框(MacWin通用)
  2. linux命令 查看文件行号的几种方式
  3. Redis持久化面试题
  4. 除了背八股文,Java面试更该这样准备
  5. 爬虫之爬取网贷之家在档P2P平台基本数据并存入数据库
  6. R5 2400G蓝屏 + 无法关机
  7. 台式计算机内存怎么查,怎么查询电脑内存的大小?怎样看?
  8. Nintex Workflow Get Attachment link
  9. DownloadManager下载APK并安装(适配7.0,免费下载)
  10. 跳转到文字转语音设置界面