2010-09-17 173 views
1

我想做一个非常简单的bash脚本来查找与当前目录的目录结构中给定名称匹配的文件。所以,我使用的查找功能,这样文件搜索bash脚本

ARGS=1 
E_BADARGS=65 
E_NOFILE=66 

if [ $# -ne "$ARGS" ] # Correct number of arguments not passed 
then 
    echo "Usage: `basename $0` filename" 
    exit $E_BADARGS 
fi 

echo `find ./ -type f -name \$1` 

这工作正常,但不像当我在命令行中使用find命令,生成的文件路径不被换行,但只是用空格隔开。这自然不太容易在屏幕上看到。我怎么回声,以便它找到的每个文件将被换行符分隔。

回答

1

由于@codaddict指出,echo没有必要在这里。但是,理解代码为什么会以这种方式运行也是一个很好的练习。提示:比较

echo `find ./ -type f -name \$1` 

echo "`find ./ -type f -name \$1`" 
+0

的\ infront,当我使用“”引号进行操作时,效果很好。所以,解决了这个问题,但是因为你和@codaddict都声称echo是不必要的,但是去掉反引号和回显并不会给我什么,脚本只是运行然后停下来。虽然thanx帮助我使它工作:)。 – sfactor 2010-09-17 11:02:05

1

尝试改变

echo `find ./ -type f -name \$1` 

find ./ -type f -name $1 
+0

最初我只是在那里没有回声的命令,但没有显示任何结果。所以我加了回声。 – sfactor 2010-09-17 10:52:19

+0

删除回声和反引号。 – codaddict 2010-09-17 10:55:25

+1

并且还删除了'$' – codaddict 2010-09-17 11:12:59

3

我会改变你的find命令这一个:

find . -maxdepth 1 -type f -name "$1"

注意,双引号在find命令样重要的是,处理正则表达式correclty。此外,我添加maxdepth 1来搜索仅在当前目录中的文件