用目录名替换部分文件名

用目录名替换部分文件名

我有名为 的文件夹ACB*,其中有许多其他文件,其中有几个文件名为scanAC_*

我想删除调用的部分scanAC并将其替换为它所在的目录名称。

例如,目录ACB_200315包含文件scanAC_typefile_2S.dcm,我希望最后一个文件成为ACB_200315_typefile_2S.dcm

我现在尝试过的(Linux、SSH、重命名选项不可用)但不起作用:

for i in ACB*; do
cd ${i}
  mv scanID* ${i/scanID/${PWD##*/}};
cd ..
done

答案1

使用以下脚本使其工作,改编了 Costas 提供的一开始不起作用的脚本:

for d in ACB*; do
  cd ${d}
    for f in scanID*; do
    mv "${f}" "${d}${f#scanID}" 
    done
  cd ..
done

答案2

对于“几个文件”脚本必须稍作修改

for d in ACB* ; do
    for f in ${d}/scanID* ; do
        mv "${f}" "${f/scanID/${d}}"
       #mv "${f}" "${d}/${d}${f#*scanID}"
    done
done

或者使用寻找反而

find ACB* -name 'scanID*' -exec bash -c 'mv "$0" ""${0/scanID/${0%\/*}}"' {} \;

相关内容