如何获得"! -path"来自file for find命令的参数

时间:2016-01-13 10:06:45

标签: path find

我需要一个脚本,可以在给定路径上找到具有给定扩展名的文件,但不包括目录,它们的名称取自文件。

我们有一个script.sh和一个white.list文件。 white.list包含:

/path/something

/path/someotherthing

脚本有:

whitelistfile=/scriptdir/white.list
whitelist=`cat $whitelistfile`

if test -n "$whitelist"
then
    # collect whitelist paths
    for listitem in $whitelist;
    do
        excludepath+="! -path \"${listitem}*\" "
    done

files=`find "$path" $excludepath -name *."$3" -type f`

fi

echo $files

问题是find不接受$ excludepath参数。说没有这样的目录。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你正在使用数组,正如我在your other question中所解释的那样。 Bash FAQ有一个关于从文件中读取行的事情。

这样:

whitelistfile=/scriptdir/white.list

while IFS= read -r; do
  excludepath+=(! -path "$REPLY")
done <$whitelistfile
[[ $REPLY ]] && excludepath+=(! -path "$REPLY")

files=`find "$path" "${excludepath[@]}" -name "*.$3" -type f`