您的位置:首页 > 其它

细节问题(删除具有特殊字符的文件/文件夹)

2011-07-14 10:30 375 查看
今天在搜索日志文件时候,突然发现了个细节问题,就是在我搜索的那个目录中,有好多以时间结尾的日志,我一直在敲tab键,不断的补充完整要搜索的内容,突然发现它自动补充的东西让我有些吃惊,然后忽然明白了某些东东,闲来和大家分享一下:

[root@master jetty]#ls /opt/log/fgwjetty.log.2011-07-13-09\:

fgwjetty.log.2011-07-13-09:40 fgwjetty.log.2011-07-13-09:50 fgwjetty.log.2011-07-13-09:59

[root@master jetty]# ls /opt/log/fgwjetty.log.2011-07-13-09\:5

fgwjetty.log.2011-07-13-09:50 fgwjetty.log.2011-07-13-09:59


[root@master jetty]# ls /opt/log/fgwjetty.log.2011-07-13-09\:59

/opt/log/fgwjetty.log.2011-07-13-09:59

[root@master jetty]#

诺,那个冒号就是关键,遇到了特殊字符,需要进行转义!

另外我还遇到过类似的情况:

查看我当前所在目录发现我的目录下面有个特殊的目录,但是无法删除,然后就突然想起这个转义字符,然后就试了下,结果就ok了,O(∩_∩)O~

(一)使用--选项

[root@node2 tomcat]# ll

total 6296

-rw-r--r-- 1 root root 6407210 Feb 9 13:43 apache-tomcat-6.0.29.tar.gz

drwxr-xr-x 9 root root 4096 Jul 14 10:50-d

drwxr-xr-x 9 root root 4096 Jun 10 21:16 tcServer200-1

drwxr-xr-x 9 root root 4096 Jul 5 11:36 tctomcat231-2

drwxr-xr-x 9 root root 4096 May 9 17:32 tomcat-caiwebsite

drwxr-xr-x 9 root root 4096 May 17 09:40 tomcatCas231-1

drwxr-xr-x 9 root root 4096 Jul 5 11:34 tomcatServer231-1

[root@node2 tomcat]# rm -rf ./

apache-tomcat-6.0.29.tar.gz tcServer200-1/ tomcat-caiwebsite/ tomcatServer231-1/

-d/ tctomcat231-2/ tomcatCas231-1/

[root@node2 tomcat]# rm -rf ./\-d/

[root@node2 tomcat]# ll

total 6292

-rw-r--r-- 1 root root 6407210 Feb 9 13:43 apache-tomcat-6.0.29.tar.gz

drwxr-xr-x 9 root root 4096 Jun 10 21:16 tcServer200-1

drwxr-xr-x 9 root root 4096 Jul 5 11:36 tctomcat231-2

drwxr-xr-x 9 root root 4096 May 9 17:32 tomcat-caiwebsite

drwxr-xr-x 9 root root 4096 May 17 09:40 tomcatCas231-1

drwxr-xr-x 9 root root 4096 Jul 5 11:34 tomcatServer231-1

[root@node2 tomcat]#


由于文件夹的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,可以使用rm -rf -- -d/



其实我发现直接用命令rm -rf ./-d/也是可以删除的,嘿嘿。。。
同理:

如果要是文件名-ee,同理就可以使用rm -- -ee进行删除;如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。

例如:

touch ==file;rm ""=""=file

或者

touch ==file;rm \=\=file

或者

touch ==file;rm "==file"

(二) 对于这种含有特殊字符的,我们可以根据它的innode节点号进行删除,

[root@node2 tomcat]#ll -i

total 6296

7634946 -rw-r--r-- 1 root root 6407210 Feb 9 13:43 apache-tomcat-6.0.29.tar.gz

8523329 drwxr-xr-x 2 root root 4096 Jul 14 11:01 -d

7703208 drwxr-xr-x 9 root root 4096 Jun 10 21:16 tcServer200-1

8455200 drwxr-xr-x 9 root root 4096 Jul 5 11:36 tctomcat231-2

7634947 drwxr-xr-x 9 root root 4096 May 9 17:32 tomcat-caiwebsite

7734765 drwxr-xr-x 9 root root 4096 May 17 09:40 tomcatCas231-1

7734813 drwxr-xr-x 9 root root 4096 Jul 5 11:34 tomcatServer231-1

[root@node2 tomcat]# find . -inum8523329 -delete

[root@node2 tomcat]# ll

total 6292

-rw-r--r-- 1 root root 6407210 Feb 9 13:43 apache-tomcat-6.0.29.tar.gz

drwxr-xr-x 9 root root 4096 Jun 10 21:16 tcServer200-1

drwxr-xr-x 9 root root 4096 Jul 5 11:36 tctomcat231-2

drwxr-xr-x 9 root root 4096 May 9 17:32 tomcat-caiwebsite

drwxr-xr-x 9 root root 4096 May 17 09:40 tomcatCas231-1

drwxr-xr-x 9 root root 4096 Jul 5 11:34 tomcatServer231-1

[root@node2 tomcat]#

以上版本Red Hat Enterprise Linux AS release 4 (Nahant Update 4)【64位】

可能有些版本不支持以上用法:

那么可以使用

[root@node2 tomcat]# find . -inum8523329
-exec rm -rf {} \;

[root@node2 tomcat]# ll

total 6292

-rw-r--r-- 1 root root 6407210 Feb 9 13:43 apache-tomcat-6.0.29.tar.gz

drwxr-xr-x 9 root root 4096 Jun 10 21:16 tcServer200-1

drwxr-xr-x 9 root root 4096 Jul 5 11:36 tctomcat231-2

drwxr-xr-x 9 root root 4096 May 9 17:32 tomcat-caiwebsite

drwxr-xr-x 9 root root 4096 May 17 09:40 tomcatCas231-1

drwxr-xr-x 9 root root 4096 Jul 5 11:34 tomcatServer231-1

[root@node2 tomcat]#

该版本是Red Hat Enterprise Linux AS release 4 (Nahant Update 6)【也是64位】

[angel.zhu@sys-4 ~]$ find . -type f -inum 456087 -delete

find: invalid predicate `-delete'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: