我有一个以特定字符串开头的文件文件夹,并希望使用文本文件中的相应列替换部分字符串
包含文件的文件夹
ABC_S1_002.txt
ABC_S1_003.html
ABC_S1_007.png
NMC_D1_002.png
NMC_D2_003.html
我有一个文本文件,其中的字符串将替换为:
ABC ABC_newfiles
NMC NMC_extra
因此,重命名后的文件夹将是
ABC_newfiles_S1_002.txt
ABC_newfiles_S1_003.html
ABC_newfiles_S1_007.png
NMC_extra_D1_002.png
NMC_extra_D2_003.html
我尝试使用MV逐个文件
for f in ABC*; do mv "$f" "${f/ABC/ABC_newfiles}"; done
如何读取第一列中包含旧字符串的文本文件,并用第二列中的新字符串替换该文本文件?我试过了
IFS=$'\n'; for i in $(cat file_rename);do oldName=$(echo $i | cut -d $'\t' -f1); newName=$(echo $i | cut -d $'\t' -f2); for f in oldName*; do mv "$f" "${f/oldName/newName}"; done ; done
虽然没有工作。
查看的结果
sed -r 's#([^ ]*) (.*)#for f in \1*; do mv "$f" "${f/\1/\2}"; done#' textfile
看起来不错时,您可以复制粘贴结果或将其包装在中source
:
source <(sed -r 's#([^ ]*) (.*)#for f in \1*; do mv "$f" "${f/\1/\2}"; done#' textfile)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句