我正在尝试在 shell 脚本中使用 find 来计算我匹配通配符模式的文件数量,然后在只有一个的情况下获取文件的名称。但是我无法将通配符模式传递给反引号扩展。
FINDCMD="find . -iname *DATA*.txt"
DATACOUNT=$($FINDCMD | wc -l)
if [ $DATACOUNT -eq 1 ]
then
use-data $($FINDCMD)
else
echo bugger
fi
这不起作用: shell 在调用 find 时扩展 DATA.txt。我希望通过星号来查找。
如果我做到了
FINDCMD="find . -iname '*DATA*.txt'"
然后 shell 不会扩展星号,但 find 获取单引号并且不匹配任何内容。
请您参考如下方法:
不要把你的命令放在一个变量中。直接执行命令有什么问题?
DATACOUNT=$(find . -iname "*DATA*.txt" | wc -l)
if [ $DATACOUNT -eq 1 ];then
.....
fi
编辑:
如果您想重用该命令,请使用子程序
myfind(){
find . -iname "*DATA*.txt" | wc -l
}