【发布时间】:2017-08-21 02:25:01
【问题描述】:
我正在尝试编写一个.sh 脚本,它会在某一时刻检查当前目录中是否有一个或多个文件与*\_??\_??\_64kbs.mp3 匹配
或者,使用正则表达式^.*\_..\_..\_64kbs\.mp3$
这是对命令的一次尝试:
if [ 'ls *_??_??_64kbs.mp3 2>/dev/null | wc -l ' == 0 ];
then echo "nothing";
else echo "something";
fi
我知道
'ls *_??_??_64kbs.mp3 2>/dev/null | wc -l'
在这种情况下,只返回数字 9 到终端,因为有 9 个匹配项。如果我删除第一个“?”,它会返回 0,就像它应该返回的那样,因为没有与该表达式匹配的文件名。但是上面 if 表达式的输出总是“某物”。
编辑: 有人要求我要匹配的完整示例文件名。这是一个:
George-1983_1A_01_64kbs.mp3
【问题讨论】:
-
能否举一个完整的示例文件名作为例子?
-
看看
$? -
刚刚在问题中添加了一个示例文件名,Inian。
-
哎呀,我不明白你的建议。
-
您正在检查字符串
'ls ....'是否等于0,但它从来都不是。
标签: linux bash shell conditional ls