转贴地址: Cy158358.cublog.cn
#!/bin/sh
check_patch()
{
test -d $1
return
}
{
test -d $1
return
}
#检查路径是否存在
check_patch $2
if [ $? -ne 0 ]
then
echo "no such path $2"
exit 1
fi
check_patch $2
if [ $? -ne 0 ]
then
echo "no such path $2"
exit 1
fi
if [ "$1" = "name" ]
then
#查找txt文件
echo "--------------------------*.txt"
find $2 -name "*.txt"
#查找以大写字母开头的文件
echo "--------------------------[A-Z]* [A-Z]*.*"
find $2 -name "[A-Z]*"
then
#查找txt文件
echo "--------------------------*.txt"
find $2 -name "*.txt"
#查找以大写字母开头的文件
echo "--------------------------[A-Z]* [A-Z]*.*"
find $2 -name "[A-Z]*"
#查找以两个小写字母开头、后接1个数字再接一个大写字母的文件
echo "--------------------------[a-z][a-z][0-9][A-Z]*"
find $2 -name "[a-z][a-z][0-9][A-Z]*"
echo "--------------------------[a-z][a-z][0-9][A-Z]*"
find $2 -name "[a-z][a-z][0-9][A-Z]*"
elif [ "$1" = "perm" ]
then
#查找可读、可写、可执行的txt文件
find $2 -name "*.txt" -perm 777
then
#查找可读、可写、可执行的txt文件
find $2 -name "*.txt" -perm 777
elif [ "$1" = "type" ]
then
#查找所有目录
echo "-------------------all dir"
find $2 -type d
then
#查找所有目录
echo "-------------------all dir"
find $2 -type d
#查找除目录以外的所有文件
echo "-------------------all files"
find $2 ! -type d
echo "-------------------all files"
find $2 ! -type d
#查找所有符号链接文件
echo "-------------------all link"
ln -s $2/b $2/ln-b
find $2 -type l
echo "-------------------all link"
ln -s $2/b $2/ln-b
find $2 -type l
elif [ "$1" = "size" ]
then
#查找所有0字节文件
echo "-------------------size = 0"
find $2 -name "*.*" -size 0c
then
#查找所有0字节文件
echo "-------------------size = 0"
find $2 -name "*.*" -size 0c
#查找所有小于1k字节的文件
echo "-------------------size < 1k"
find $2 -name "*.*" -size -1024c
echo "-------------------size < 1k"
find $2 -name "*.*" -size -1024c
#查找所有大于2k字节的文件
echo "-------------------size > 2k"
find $2 -name "*.*" -size +2048c
echo "-------------------size > 2k"
find $2 -name "*.*" -size +2048c
#查找所有大于2k字节的文件(包括目录)
echo "-------------------size > 2k"
find $2 -size +2048c
echo "-------------------size > 2k"
find $2 -size +2048c
elif [ "$1" = "depth" ]
then
#先在根目录中查找test.c,然后才到子目录中查找
echo "-------------------find test.c"
find $2 -name "test.c" -depth
then
#先在根目录中查找test.c,然后才到子目录中查找
echo "-------------------find test.c"
find $2 -name "test.c" -depth
#查找test.c
echo "-------------------find test.c"
find $2 -name "test.c"
echo "-------------------find test.c"
find $2 -name "test.c"
elif [ "$1" = "exec" ]
then
#在目录中查文件test.c,然后显示其属性
echo "-------------------find test.c ls -l"
find $2 -name "test.c" -exec ls -l {} /;
then
#在目录中查文件test.c,然后显示其属性
echo "-------------------find test.c ls -l"
find $2 -name "test.c" -exec ls -l {} /;
#在目录中查文件ddd.c,然后删除之
echo "-------------------find ddd.c rm"
touch $2/ddd.c
find $2 -name "ddd.c" -exec rm {} /;
echo "-------------------find ddd.c rm"
touch $2/ddd.c
find $2 -name "ddd.c" -exec rm {} /;
#在目录中查文件ddd.c,然后删除之(需要确认)
echo "-------------------find ddd.c rm"
touch $2/ddd.c
find $2 -name "ddd.c" -ok rm {} /;
echo "-------------------find ddd.c rm"
touch $2/ddd.c
find $2 -name "ddd.c" -ok rm {} /;
#在目录中查文件aaa.c,然后拷贝到back目录
echo "-------------------find aaa.c copy"
touch $2/aaa.c
test -d $2/../back
if [ $? -ne 0 ]
then
mkdir $2/../back
fi
find $2 -name "aaa.c" -exec cp {} $2/../back /;
echo "-------------------find aaa.c copy"
touch $2/aaa.c
test -d $2/../back
if [ $? -ne 0 ]
then
mkdir $2/../back
fi
find $2 -name "aaa.c" -exec cp {} $2/../back /;
fi
将上述内容保存为脚本文件find,后可以测试find命令的各种功能。
./find name path
显示目录path下所有的txt文件
显示目录path下所有以大写字母开头的文件
显示目录path下所有以两个小写字母+1个数字+1个大写字母开头的文件
./find perm path
显示目录path下所有当前用户可读、可写、可执行的文件
./find type path
显示目录path下所有文件夹目录名
显示目录path下所有文件名
显示目录path下所有链接文件名
./find size path
显示目录path下所有0字节文件
显示目录path下所有<1k的文件
显示目录path下所有>2k的文件
显示目录path下所有>2k的文件和目录
./find exec path
查找目录path下的test.c文件并显示其详细属性
查找目录path下的ddd.c文件并删除之
查找目录path下的ddd.c文件并删除之(需要确认)
查找目录path下的aaa.c文件并拷贝到上层目录的back文件夹中