当前位置: 技术问答>linux和unix
linux下编写shell实现 find查找文件命令
来源: 互联网 发布时间:2017-01-01
本文导语: 如题; 首先想到的是遍历路径 #!/bin/sh foreachd () { for file in $1/* do if [ -d $file ] #是路径 then foreachd $file else echo $file; #是文件 fi done } echo $0 a=`echo $1` if [ $# -gt 0 ] then foreachd $a # echo "kdk" else...
如题;
首先想到的是遍历路径
#!/bin/sh
foreachd () {
for file in $1/*
do
if [ -d $file ] #是路径
then
foreachd $file
else
echo $file; #是文件
fi
done
}
echo $0
a=`echo $1`
if [ $# -gt 0 ]
then
foreachd $a
# echo "kdk"
else
foreachd "."
fi
这里有一个不错,但是在遍历过程中如果有像这样的文件或者文件夹或会报错
比如:有一个文件名称:(附件).sh
会有报错:[: 24: (复件).sh: unexpected operator
遍历完成后如何匹配比对?
在查找到文件是我用了这样一条语句
..............................
if [ -d $file ] #是路径
then
foreachd $file
else
echo $file |awk -F '/' '/$file_name/ {if($NF~/'$file_name'/) print}' 2>/dev/null #是文件
.........................
有没有更好的办法
首先想到的是遍历路径
#!/bin/sh
foreachd () {
for file in $1/*
do
if [ -d $file ] #是路径
then
foreachd $file
else
echo $file; #是文件
fi
done
}
echo $0
a=`echo $1`
if [ $# -gt 0 ]
then
foreachd $a
# echo "kdk"
else
foreachd "."
fi
这里有一个不错,但是在遍历过程中如果有像这样的文件或者文件夹或会报错
比如:有一个文件名称:(附件).sh
会有报错:[: 24: (复件).sh: unexpected operator
遍历完成后如何匹配比对?
在查找到文件是我用了这样一条语句
..............................
if [ -d $file ] #是路径
then
foreachd $file
else
echo $file |awk -F '/' '/$file_name/ {if($NF~/'$file_name'/) print}' 2>/dev/null #是文件
.........................
有没有更好的办法
|
if [ -d $file ]
改成
if [ -d "$file" ]
试试
改成
if [ -d "$file" ]
试试
|
还有就是,我如何将我的find脚本实现像find,mysql一样的开启方式那
比如说
在终端键入$:myfind /home/whc test.cpp
就执行我的"find"
比如说
在终端键入$:myfind /home/whc test.cpp
就执行我的"find"