我需要一个脚本,可以在给定路径上找到具有给定扩展名的文件,但不包括目录,它们的名称取自文件。
我们有一个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参数。说没有这样的目录。
有人可以帮帮我吗?
答案 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`