Linux如何删除以特殊字符开头的文件

  作者:zhanhailiang 日期:2014-11-18

Linux在使用一些工具时经常会生成一些以特殊字符开头的文件,如以-开头,此时若使用普通rm,会提示“invalid option”:

[root@~]# rm -\,trail\:-
rm: invalid option -- ‘,‘
Try `rm ./-,trail:-‘ to remove the file `-,trail:-‘.
Try `rm --help‘ for more information.

这是因为Linux Shell默认认为-o|–option表示选项配置,而在当前命令rm中读不到相应的选项配置,所以报错。

通过rm –help可以看到:

To remove a file whose name starts with a `-‘, for example `-foo‘,
use one of these commands:
  rm -- -foo
 
  rm ./-foo

总之,要删除掉特殊文件,可以使用绝对路径或相对路径或–来避免错误地将文件名解析为选项配置,以下提供多种操作方案:

第一种:rm – filename

[root@~]# rm -- -\,trail\:-
rm: remove regular empty file `-,trail:-‘? 

第二种:rm 相对路径

[root@~]# rm ./-\,trail\:-
rm: remove regular empty file `./-,trail:-‘? 

第三种:rm 绝对路径

[root@~]# rm ~/-\,trail\:-
rm: remove regular empty file `/root/-,trail:-‘?

更深入一点,分析源码:

首先,下载源码包:

[root@~/software]# wget http://down1.chinaunix.net/distfiles/coreutils-8.4.tar.gz

查看src/rm.c源码:

可见,当参数以特殊字符-开头,且不在选项配置中时rm直接报错。

时间: 2024-08-10 23:29:20

Linux如何删除以特殊字符开头的文件的相关文章

linux中删除-或者减号开头的文件

用rm ./-xxx.txt删除[[email protected] yujun]# rm ./-h.sqlrm: remove regular empty file './-h.sql'? y[[email protected] yujun]# 原文地址:https://blog.51cto.com/7794482/2445949

Linux删除以破折号开头的文件Windows在批处理文件来删除隐藏属性

昨天去打印店打印的材料.结果中毒.所有的文件被隐藏.生成一个一堆快捷键.回来后.我很容易地把它放入Linux机,我想删除这些文件怪. 下面是该过程,遇到的问题. 1.您无法删除'-'该文件的开头 最初看到很多windows下一个.lnk结尾的快捷方式文件,所以,直接简单粗暴的用rm -rf *.lnk 删除,结果报错.为了说明情况,我以下做了一个样例,文件夹中仅仅有一个名为"-a.txt"的文件.运行以下的命令,报错信息例如以下: rm *.txt rm: invalid option

Linux Centos 删除除某(多)个文件之外的所有文件

通常我们通过rm -rf  *可以直接强制删除当前文件夹里面的所有内容,但是有些时候我们需要保留一些文件,就比如,网站转移更新需要保留程序压缩包等就需要用到在linux centos环境下需要删除除某(多)个文件之外的所有文件的功能了.具体方法如下: rm -f  !(a) 如果保留a和b,可以运行rm -f !(a|b)来实现,不过一般bash中运行后会提示 "-bash: !: event not found " 可以通过运行:shopt -s extglob 来解决. set命令

Linux 自动删除N天前的文件

Linux是一个很能自动产生文件的系统,日志.邮件.备份等.但是对于一些时间久远的日志可以设置定时任务删除.语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;例1:find /usr/local/backups -mtime +30 -name "*.*" -exec rm -rf {} \;将/usr/local/backups目录下所有30天前带"."的文件删除find:linux

linux自动删除规定天数前的文件

公司在线上有一个监控系统,每天都会制造大量文件,然后就需要删除规定天数以前的文件,用来保证硬盘不会满造成服务中断. 语句也很简单, #delete 15 days ago picture files find /home/monitoring/ -mtime +15 -exec rm -rf {} \; -mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前 -exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' {

Linux删除以减号开头的文件

2014年5月5日 10:33:47 原因:文件乱码了,乱码后以减号开头,删不掉 摘抄: 文件系统出现一个文件 -C.html 如何删除/新建?rm -- "-C.html" touch -- -demo.sh 可以创建 我的测试: 如果文件名字是乱码,则可以用tab键补全 复制: cp -- "-old.html"  new.html 移动等命令也应该是这种方式处理 文件名可以不加双引号

linux下删除某个目录下大量文件办法

在lamp架构里,因为设置session 超时时间为一天,所以遇到php产生的session大量存在/data/tmp目录下,数量大概有200万,并且不能及时回收.使用 rm -fr /data/tmp/sess_* 不能删除,rm命令会提示参数太多. 后,使用rsync同步删除命令实现,完美实现了批量删除大量垃圾文件操作.具体步骤如下: 大量文件存在的目录:/data/tmp 使用命令: #cd /data#mkdir -pv /data/null # 建立临时空目录 #rsync -proc

linux下删除3分钟之前指定文件夹下的指定类型文件

#!/bin/sh DELDIR="/root/crontab_test/test" #3 minute ago DELTIME="-mmin +3" #delete file type FILETYPE1="'*.txt'" FILETYPE2="'*.log'" #write to tmp file rm crontab_del_3min -f touch crontab_del_3min # every minute d

Linux删除破折号开头的文件与Windows下批量去掉文件的隐藏属性

昨天去打印店打印材料,结果中毒了,所有的文件都隐藏了,生成了一堆快捷方式.回来之后,我顺手把它查到Linux的机器上,想删掉那些诡异的文件.下面是这个过程中,遇到的问题. 1.无法删除'-'开头的文件 本来看到有好多windows下.lnk结尾的快捷方式文件,所以,直接简单粗暴的用rm -rf *.lnk 删除,结果报错.为了说明情况,我下面做了一个例子,目录中只有一个名为"-a.txt"的文件,执行下面的命令,报错信息如下: rm *.txt rm: invalid option -