linux 替换sh脚本中的字符

tvmytwxo  于 2023-02-03  发布在  Linux
关注(0)|答案(1)|浏览(114)

我正在编写sh脚本,需要将.-替换为_
当前:

V123_45_678_910.11_1213-1415.sh

招聘:

V123_45_678_910_11_1213_1415.sh

我已经使用了一些mv命令,但是遇到了问题。

for file in /virtualun/rest/scripts/IOL_Extra/*.sh ; do mv $file ${file//V15_IOL_NVMe_01./V15_IOL_NVMe_01_} ; done
cngwdvgl

cngwdvgl1#

${variable//pattern/replacement}是一个bash扩展,在sh中,你需要这样的代码:

for src in /virtualun/rest/scripts/IOL_Extra/*.sh; do
  # do replacements on name only
  dest=$(printf '%s' "${src##*/}" | tr .- __)
  # correct extension
  dest=${dest%_sh}.sh
  # prepend path
  dest=${src%/*}/$dest
  # rename
  echo mv "$src" "$dest"
done

如果输出良好,请删除echo

相关问题