簡體   English   中英

使用 bash/regex 重命名文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM