[英]Rename files using bash/regex?
我有文件名为:
test-12.5.0_567-release.apk
我希望它们看起来像:
test-release.apk
我意识到我可以用 bash 做到这一点:
for file in *release.apk; do
mv "$file" "`basename $file SOMETHING`NEW_FILE_NAME"; done
我猜它需要一些正则表达式? 它会是什么样子?
谢谢 !
你可以做:
for file in *release.apk; do
mv "$file" "${file/-*-/-}"
done
或者你可以使用这个:
for file in *release.apk; do
mv "$file" "${file%-*-*}-release.apk"
我正在删除-12.5.0_567-release.apk
然后添加-release.apk
。
然而,恕我直言, anubhava 的解决方案看起来更好,因为它更准确地做你想做的事。
另一种选择,使用实际的正则表达式和捕获组。 它使用=~
运算符和BASH_REMATCH
数组(包含捕获的子组)
for file in *; do
# check if the filename matches the regex and extract 2 groups
if [[ $file =~ ([^-]*-).*-([^-]*) ]]; then
# use the captured groups
mv "$file" "${BASH_REMATCH[1]}${BASH_REMATCH[2]}";
fi
done
您可以在rename
命令中使用正则表达式:
rename 's/-*-/-/g' *release.apk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.