我一直在搗鼓這個問題,我被卡住了。我在筆記本電腦上被寵壞了,因為我可以使用perl重命名,而且修復數字填充很簡單。現在我在一個服務器上,重命名卻不能作業。我需要一種方法來調整一個看起來像下面這樣的檔案的patting
。foo-353-03-53-23.txt
本網站和其他網站上的大多數例子都會在填充程序中破壞所有的內容,這對我沒有幫助,因為我在檔案名中有元資料。
我正在尋找產生以下結果的方法
foo-000353-03-53-23.txt
所有的東西都被保留了,只是第一個數字被填充了。
請幫助保留我的檔案名和理智。
提前感謝。
uj5u.com熱心網友回復:
分割字串和重新格式化:
#!/usr/bin/env bash
oldname='foo-353-03-53-23.txt'
IFS=- read -r -d '' a n b <<< "$oldname"
printf -v newname '%s-d-%s'/span> "$a" "$((10#$n)/span>)" "${b%? }"
# Debug dump variables
declare -p oldname newname
另一種方法是使用Bash的Regex來捕獲字串elmeents:
oldname='foo-353-03-53-23.txt'
# 用Regex捕獲字串元素。
[[ $oldname =~ ([^0-9] )([0-9] )(.*)])
# 重置字串元素。
printf -v newname '%sd%s'
"${BASH_REMATCH[1]}" "$((10#${BASH_REMATCH[2]}))" "${BASH_REMATCH[3]}"
if [ ! -e "$newname" ]; then
echo mv --no-clobber -- "$oldname"/span> "$newname"/span>
else
printf '無法將%s重命名為%s,因為%s已經存在!
'
"$oldname"/span> "$newname" "$newname" > &2
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324949.html
標籤:
上一篇:為什么我在這個Bash腳本中得到一個"沒有這樣的檔案或目錄"的錯誤?
下一篇:在一列中加入2個帶有分類標簽的表
