file
-f : 判断文件是否为普通文件
-d :判断是否目录
-b :判断是都块设备文件
-c :判断是都字符设备文件
-S :判断是否socket文件
-p: 判断是否管道文件
-h: 判断是都为符号链接
-L: 文件存在且有符号链接
文件大小存在性:
-e : 判断文件或者目录是否存在
-s : 文件或者或者目录存在且大小大于0
文件读写特性
-r: 判断文件是否有可读权限
-w:判断文件是否具有可写权限
-x: 判断文件是否具有可执行的权限
-g:判断文件是否具有sgid位
-u:判断文件是否有suid位
-k:判断是否设置了粘滞位,文件设置粘滞位后会被写入缓存
文件修改时间:
file1 -nt file2 : 判断file1是否 比file2 新(new than)
file1 -ot file2 : 判断file1是否 比file2 旧(old than)
实例一:
递归地打印目录
#!/bin/bash function readir() { for file in `ls $1` do if [ -d $1"/"$file ] then readir $1"/"$file; else echo $1"/"$file; fi done } readir /tmp
实例二:
查看目录下的文件或者目录是否具有可读可写可执行的特性
#!/bin/bash function filetest() { for file in `ls $1` do if [ -r $file -a -w $file -a -x $file ] then echo $file; fi done } filetest /tmp