我想在目录结构中递归搜索特定文件类型的文件。但我需要从外部文件传递文件类型。输出应该是列表,其中每一行都是文件的绝对路径。我将使用输出进行进一步处理。文件类型列表所在的外部文件看起来像这样(filter.lst):
*.properties
我试过这个(searchfiles.sh):
while read line
do
echo "$(find $1 -type f -name $line)"
done < $2
脚本中的 echo 命令仅用于测试目的。我运行了脚本:
./searchfiles.sh test_scripting filter.lst
find 命令的 echo 输出为空。为什么?我尝试通过以下方式更改脚本以测试命令是否正确构建并且文件 *.properties 是否存在:
while read line
do
echo "find $1 -type f -name $line"
echo "$(find $1 -type f -name $line)"
done < $2
我有输出:
./searchfiles.sh test_scripting filter.lst
find test_scripting -type f -name *.properties
如果我手动复制“find test_scripting -type f -name *.properties”并将其粘贴到shell,则正确找到文件:
find test_scripting -type f -name *.properties
test_scripting/dir1/audit.properties
test_scripting/audit.properties
test_scripting/dir2/audit.properties
为什么“查找”命令不能正确处理变量?