我正在尝试在 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 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!