[原创]查找文件绝对路径的练习脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

[原创]查找文件绝对路径的练习脚本

#1

帖子 aBiNg » 2006-10-16 15:34

$cd ~/sripts
$gedit abspath

代码: 全选

#! /bin/bash
#File Name: ~/scripts/abspath
#Author:     helo_aBiNg
#Written:    06.10.16
#
if test $# != 1
    then
           echo "Usage: abspath [one file]"
           exit 1
     else   
           sub_path=(`find $(pwd) -name $1`)     #数组赋值
fi
N=${#sub_path[*]}     #数组维数
if [ $N = 0 ]
     then
            echo "result: No such file in current directory"
            exit 1
     else
            m=0
            while test ${#sub_path[*]} != $m && test -f ${sub_path[m]}     #判断不同路径相同文件名输出次数,并排除同名文件夹
            do        
                echo "${sub_path[m]}"
                m=`expr $m + 1`
            done
fi
exit 0
Save it!
$chmod +x ~/sripts/abspath
$sudo ln -s ~/sripts/abspath /usr/bin/

Try to run it:
$cd /usr
$abspath beryl
>/usr/bin/beryl
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2006-10-17 15:51

不如locate和type :lol:
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#3

帖子 eexpress » 2006-10-17 15:55

不如locate和type :lol:
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#4

帖子 aBiNg » 2006-10-17 19:23

eexpress 写了:不如locate和type :lol:
还有:
$find $(pwd) -name xxx

练习嘛,没实际意义的... :lol:
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2006-10-17 19:38

:lol:
不如这样简单。
[ -z $1 ] && echo “xxxx” && exit 1;
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#6

帖子 aBiNg » 2006-10-18 14:14

eexpress 写了::lol:
不如这样简单。
[ -z $1 ] && echo “xxxx” && exit 1;
这个是什么道理呢? :roll:
Guo R.H
帖子: 87
注册时间: 2006-09-15 19:14

#7

帖子 Guo R.H » 2006-10-21 19:42

代码: 全选

[ -z $1 ] && echo "Usage : [filename]"  && exit 1 
  sub_path=(`find $(pwd) -name $1 `)
 N=${#sub_path[*]}     #数组维数 
  [ $N = 0 ] && echo "result: No such file in current directory" && exit 1
   m=0 
   while test ${#sub_path[*]} != $m && test -f ${sub_path[m]}    
   do        
       echo "${sub_path[m]}" 
             m=`expr $m + 1` 
  done 
 exit 0
Zelgadiss
帖子: 8
注册时间: 2006-11-06 10:25

#8

帖子 Zelgadiss » 2006-11-06 10:59

我没有看懂具体是什么意思....

如果是要遍历的话,为什么不用递归函数呢?
例如:

代码: 全选

fun()
{
        local i
        local path=$PWD
        for i in `ls`;do
                if [ -d $i ] ;then
                        cd $i
                        fun
                        cd $path
                else
                        command $i
                fi
        done
}
如果不是遍历结构的话,那么都有对应命令的吧.....
回复