在bash脚本中发现find函数的结果

时间:2014-10-07 13:57:50

标签: linux bash shell ssh

我在bash中遇到了一个脚本问题。我的for函数是使用find函数的结果。

长话短说:在SSH中,找到函数返回2个结果,并在bash脚本中找到一个结果。

我尝试了以下两个代码。

for f in $(find $path -name *.properties)
do
echo $f
done

OR

list=$(find $path -name *.properties)
for f in $list;
do
echo $f
done

在指定的路径中有几个文件夹和文件,其中两个文件具有我要查找的扩展名。如果我在SSH中运行其中一个命令,我会找到这两个文件,但是如果我从bash脚本运行该命令,则结果包含一个文件。

for函数工作正常,问题是find函数。我在脚本bash中运行以下代码,但仍然有一个结果。

list=$(find $path -name *.properties)
echo $list

我在SSH中运行以下代码,我找到了2个文件:

[root@was85 ~]# for f in $(find $path/temp/ -name *.properties); do echo $f
> done

任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果使用BASH更好地使用while循环并使用正确引用并使用process substitution选项:

-print0

答案 1 :(得分:0)

如果使用bash 4或更高版本,请使用globstar运算符而不是对find的vanilla调用来简单地递归文件层次结构。

shopt -s globstar
for f in "$path"/**/*.properties; do
    echo "$f"
done

(如果正文 只是echo $f,那么printf "%s\n" "$path"/**/*.properties就足够了,而不是使用循环。)