2010-09-17 222 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來搜索僅在當前目錄中的文件