[英]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.