细节问题(删除具有特殊字符的文件/文件夹)
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'
[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'
相关文章推荐
- Linux下删除具有特殊字符的文件
- Linux/Unix下如何删除具有特殊字符的文件
- linux删除含特殊字符的文件或文件夹
- 上传文件细节处理问题(包括中文乱码、限制文件大小、显示上传速度、删除临时文件,随机生成文件夹等)
- asp.net 删除项目文件/文件夹IIS重启,Session丢失问题
- 如何在 Windows XP 中设置、查看、更改或删除文件和文件夹的特殊权限
- linux下rm命令删除文件名中包含特殊字符的文件【转】
- 基于CentOS7开发之路 --- 日常使用 :Linux 删除带有特殊字符的文件
- 在Linux下如何删除包含特殊字符的文件
- 如何建立和删除特殊字符的文件夹?
- 删除特殊字符命名的文件夹
- 关于文件和文件夹在复制后属性时间变化的细节问题
- linux删除特殊字符命名的文件
- Linux查看或删除带特殊字符的文件
- Linux 下删除或创建以特殊特殊字符的文件
- 解决eclipse资源文件名称不能含有特殊字符跟大写字母的问题
- linux下删除特殊字符中文乱码文件方法
- linux 删除带有特殊符号的文件及文件夹
- 特殊字符:删除特殊字符文件夹的方法
- 删除文件名含有特殊字符的文件