我在sh
(Mac OSX 10.6)中有这个小脚本来查看文件数组。谷歌在这一点上已经不再有用了:
files="*.jpg"
for f in $files
do
echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*'
name=$?
echo $name
done
到目前为止(显然,对于shell大师来说)$name
仅保存0,1或2,这取决于grep
是否发现文件名匹配所提供的事项。我想要的是捕获parens ([a-z]+)
中的内容并将其存储到一个变量。
我想要如果可能,只使用grep
。如果不是,请不要使用Python或Perl等sed
或类似的东西-我是shell的新手,想从*nix纯粹的角度攻击这个。
另外,作为一个超酷bonus,我很好奇如何在shell中连接字符串?我捕获的组是存储在$name中的字符串“someename”,我想在它的末尾添加字符串“.jpg”,我可以cat $name '.jpg'
吗?
如果你有时间,请解释一下发生了什么事。