【问题标题】:Error While running for loop for renaming multiple file in shell script运行for循环以重命名shell脚本中的多个文件时出错
【发布时间】:2017-02-24 15:38:21
【问题描述】:

在 AIX 中使用 for 循环重命名多个文件时出现错误

${fn/$eisinno/$efilename}": 0403-011 指定的替换对该命令无效。

输入文件:

raj_10576_INE728J01019_arya1.pdf

ram_10576_INE728J01019_arya1.pdf

rhaul_10576_INE728J01019_arya1.pdf

sanjay_10576_INE728J01019_arya1.pdf

dinesh_10576_INE728J01019_arya1.pdf

所需的输出文件:

raj_10576_Remote_sag.pdf

ram_10576_Remote_sag.pdf

rhaul_10576_Remote_sag.pdf

sanjay_10576_Remote_sag.pdf

dinesh_10576_Remote_sag.pdf

我的脚本如下:

#!/bin/bash

eisinno="INE728J01019_arya1.pdf"

evenno=10576

efilename="remote_sag.pdf"


cd /home/rishabh/$eveno

for file in *_$eveno_*.pdf

do
    mv -i "${file}" "${file/$eveno_$eisinno/$eveno_remote_$efilename}"

done

请帮帮我

【问题讨论】:

  • bash 不会发送这样的消息...此消息来自ksh
  • 另外evennoeveno 也不同。你应该写的是cd /home/rishabh/$evennofor file in *_${evenno}_*.pdf

标签: linux unix for-loop rename aix


【解决方案1】:

evennos 中使用双n 并使用大括号来确定变量在哪里结束:

#!/bin/bash
eisinno="INE728J01019_arya1.pdf"
evenno=10576
efilename="remote_sag.pdf"

cd /home/rishabh/${evenno}
for file in *_${evenno}_*.pdf; do
   echo "Debug: ${file} ==> ${file/${evenno}_${eisinno}/${evenno}_remote_${efilename}}"
   # Alternative: 
   echo ${file} | sed "s/${evenno}_${eisinno}/${evenno}_remote_${efilename}/"

   mv -i "${file}" "${file/${evenno}_${eisinno}/${evenno}_remote_${efilename}}"
done

【讨论】:

  • scr_test1.sh[8]:“调试:${file} ==> ${file/${evenno}_${eisinno/${evenno}_remote_${efilename}}}” : 0403-011 指定的替换对该命令无效。
  • 抱歉,${eisinno/ 应该是 ${eisinno}/。我更正了它并添加了一个替代方案。
猜你喜欢
  • 2017-09-23
  • 2013-01-08
  • 2021-12-24
  • 2016-03-14
  • 2013-05-02
  • 2017-08-25
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多