教你删除Linux中这些因特殊字符命名无法删除的文件
我们都知道,在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 -- -foo
rm ./-foo
(省略部分内容)
内容较多,但是可以注意到上面的内容,对于以-开头的文件,提供了两种删除方式,第二种是前面提到的,而第二种,是在删除的文件前面再加--:
$ rm -- -static
我们发现这种方式也是可以删除以-开头的文件。
删除时用引号引起来
对于特殊字符,如<>!*等组成的文件如何删除呢?例如:
$ rm <>\!*
rm: missing operand
Try 'rm --help' for more information.
对于这种类型的文件,我们需要用引号将文件名包含起来:
$ rm "<>\!*"
这样就可以删除掉了,但是这种方式并不能针对所有该类型的文件,例如,文件名为!的文件就不能通过这样的方式删除,因为!是有其他含义的
增加转义字符删除文件
既然!*无法通过加引号的方式删除,那还有什么办法吗?有!删除时,增加转义字符:
$ rm \!*
这样便可以删除。在Linux中,很多字符有着特殊的含义,因此当你需要把它当普通字符使用时,就需要在前面加上\转义字符,这和C语言中的转义有点类似。再举个例子,要删除以空格开头的abc文件,可以使用下面的方式:
$ rm \ abc
即可成功删除。
按照i节点号删除
很多时候,文件名压根没法输入,因为它们都是一堆乱码。因此也完全无法通过前面介绍的方法进行删除,那还有办法吗?有!通过查找文件的i节点,按照i节点进行删除。
例如:
$ ls -i #找到乱码文件的i节点号
1703907 ç¼?ç¨?ç? ç??é«?æ¸?pdfç??.pdf
$ find ./ -inum 1703907 -exec rm {} \; #或者使用-delete参数
这种通过i节点号进行删除的方式适用于前面所提到的任何类型文件。
这里扩展说几句。在操作系统中,它是如何识别一个文件的呢?它并不是通过文件名,而是通过一个iNode号,即i节点号来识别不同的文件,文件名不过是这个文件其中的一个属性而已。
使用通配符删除
不多解释:
$ rm *.pdf
但是这种方式可能存在误删,因为只要文件名结尾为.pdf就会被删除,因此根据实际情况慎重使用。
总结
删除特殊文件名称的方法有很多,总结如下:
删除时带上路径
删除时使用 --
删除时用引号引起来
使用转义字符辅助删除
按照i节点号删除
使用通配符删除
不同类型文件可选择使用上面所提较方便的方式进行删除。
教你删除Linux中这些因特殊字符命名无法删除的文件的更多相关文章
- Linux中生成Core Dump系统异常信息记录文件的教程
Linux中生成Core Dump系统异常信息记录文件的教程 http://www.jb51.net/LINUXjishu/473351.html
- 如何优雅地删除 Linux 中的垃圾文件
不知道大家是否也跟我一样,是一只要把的自己电脑文件安排的条理有序,把没用的文件会及时删掉的程序猿呢?如果是的话,那么我们可以愉快地探讨下文章的内容.如果不是的话,你也可以留下来凑凑热闹嘛(>-& ...
- 再说linux中的rm mv 遍历执行多个文件的操作: find + xagrs
参考文章: http://cfqtyaogang.blog.163.com/blog/static/218051022011812111342203/, 这篇文章讲得很全面很详细... 包括不好理解的 ...
- LINUX中,find结合grep正则表达式,快速查找代码文件。
###目的###LINUX中,find结合grep正则表达式快速查找代码. 例如经常有需求:查找当前目录下所有.h文件中,"public开头,中间任意字符,以VideoFrameReceiv ...
- linux中,当执行rpm -e删除一个软件包时,都做了些什么事
问题描述: 今天在通过rpm进行删除软件包时,出现了问题,就引发了我对于rpm包执行删除动作时的一些行为做了思考,之前找了很多的文章,后来想如果有debug日志信息,那么不就都清楚了吗 通过打印rpm ...
- 教你一些Linux中隐藏bash历史命令的小技巧
导读 如果你登录过 Linux 系统,并敲过一些命令,那你应该知道,bash history 会记录你输入的所有命令.这个操作其实是有一定风险的. 我个人经常使用 Linux,所以我想着研究一番,看看 ...
- 手把手教你在Linux中快速检测端口的 3 个小技巧
一个执着于技术的公众号 前言 无论是要解决网络连接问题还是配置防火墙,第一件事是要检查系统实际打开了哪些端口. 本文介绍了几种快速查找 Linux 系统上哪些端口向外部开放的方法. 什么是开放端口 监 ...
- Linux中yum手动安装、手动建立仓库文件夹关联实现关联包自动安装、yum相关命令使用
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指 ...
- [转] Linux中的默认权限与隐藏权限(文件、目录)
[From] https://blog.csdn.net/davidsky11/article/details/25424615 一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是 ...
- Linux中的默认权限与隐藏权限(文件、文件夹)
一个文件(或文件夹)拥有若干个属性.包含(r/w/x)等基本属性,以及是否为文件夹(d)与文件(-)或连接文件(l)等属性.此外,Linux还能够设置其它系统安全属性.使用chattr来设置.以lsa ...
随机推荐
- BST 二叉搜索树 BinarySearchTree C++实现(递归/非递归)
目录 二叉搜索树 基本概念 常用结论 用途 二叉搜索树的性能分析 二叉搜索树的操作 查找 插入 删除 代码实现 BSTree.hpp test.cc 二叉搜索树 基本概念 二叉搜索树(BST,Bina ...
- element-ui 表格控制列显隐简单方案
核心是使用v-if控制列的显隐 <template> <div> <div v-for="(item, index) in tables" :key= ...
- 动物园 (APIO 2007) 状压DP
动物园 \([APIO \ 2007]\) · 题意: 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物.如下图所示: 你是动物园的公关主管. ...
- docker stop 容器,连接被拒绝
docker stop 容器ID 报错,无法kill,连接被拒绝 经过网上查找以及实际情况,发现原因为: 服务器重启时,正在运行的docker内的容器正在进行处理, 因为docker没有提前关闭,导致 ...
- WebShell流量特征检测_冰蝎篇
80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...
- C语言浮点数转字符串实现函数
C语言浮点数转字符串可用库函数sprintf,此处为编写的简单函数. 小数部分最多显示六位. pOut:输出字符串缓冲区 f:浮点数值 isize:输出字符串缓冲区大小 char * Funftoa( ...
- chainLink vrf实验
目标 用vrf写一个随机红包 数据结构 红包: struct Envelope { Type t; // 类型,只是erc20 和eth红包 ERC20 token; // erc20 ,如果是erc ...
- 在windows下安装Composer(转载)
在windows下安装Composer Composer是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer ...
- ftrace irqs跟踪器
当中断被关闭(俗称关中断)了,CPU就不能响应其他的事件,如果这时有一个鼠标中断,要在下一次开中断时才能响应这个鼠标中断,这段延迟称为中断延迟.向current_tracer 文件写入 irqsoff ...
- 2024年1月中国数据库排行榜: OPOT 组合续写贺新年,达梦、腾讯发力迎升势
2024年开局,墨天轮中国数据库流行度排行火热出炉,292个国产数据库齐聚榜单.整体来看,榜单前十整体变化不大,"O-P-O"格局稳固,前五位名次未发生变动.但新年伊始,各家数据库 ...