我们在使用Linux服务器时总会遇到不同的并且不容易解决的问题。例如,Linux如何删除特殊字符文件名或目录。
在解决这个问题之前,我们先简单了解一下linux中文件命名规则。文件或目录名由除“/”和空字符“\0”之外的任意ASCII字符序列组成。当然很多操作系统允许更多类型的字符组成文件名。但对于我们来说,从来不建议使用一些特殊字符来命名文件。不幸的是,我们可能无意中创建了一些特殊名称的文件,或者由程序意外的创建了一些由特殊字符组成的文件。这个时候,要删除它们,似乎没有想象中的那么简单。
我们可以通过文件的inode号删除文件
先要使用ls -i 把要删除文件的inode 号找出来ls -i |grep xxxxxx|awk '{print $2}'|xargs -i rm -f {}
#xxxxxx为文件的 inode 号
通过文件的大小删除文件
删除当前目录以及所有子目录下的文件大小为零的文件find ./ -size 0 -exec rm {} \;
删除当前目录下文件大小为零的文件(子目录不删除)find ./ -maxdepth 1 -empty -type f -print -delete #-maxdepth 指定目录层级
一般删除方法和强制删除方法
删除普通文件夹目录:rm -rf /var/log/httpd/access
将会删除/access目录以及其下所有文件、文件夹
强制删除文件:rm -f /var/log/httpd/access.log
将会强制删除/access.log这个文件
注:
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思