使用文本文件重命名文件夹中的批处理文件
rename batch files in folder using a textfile
我有一个以特定字符串开头的文件文件夹,我想使用文本文件中的相应列替换部分字符串
包含文件的文件夹
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 *; do mv "$f" "${f//}"; done#' textfile
如果看起来不错,您可以复制粘贴结果或将其包装在 source
:
source <(sed -r 's#([^ ]*) (.*)#for f in *; do mv "$f" "${f//}"; done#' textfile)
这可能对你有用(GNU 并行和重命名):
parallel --colsep ' ' rename -n 's/{1}/{2}/' {1}* :::: textFile
这将列出 textFile
中每一行的重命名命令。
检查输出后,删除 -n
选项和真正的 运行。
对于 sed 解决方案,请尝试:
sed -E 's#(.*) (.*)#ls *| sed "h;s///;H;g;s/\n/ /;s/^/echo mv /e"#e' testFile
同样,这将 echo
mv
命令输出,检查后,删除 echo
和 运行。
我有一个以特定字符串开头的文件文件夹,我想使用文本文件中的相应列替换部分字符串
包含文件的文件夹
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 *; do mv "$f" "${f//}"; done#' textfile
如果看起来不错,您可以复制粘贴结果或将其包装在 source
:
source <(sed -r 's#([^ ]*) (.*)#for f in *; do mv "$f" "${f//}"; done#' textfile)
这可能对你有用(GNU 并行和重命名):
parallel --colsep ' ' rename -n 's/{1}/{2}/' {1}* :::: textFile
这将列出 textFile
中每一行的重命名命令。
检查输出后,删除 -n
选项和真正的 运行。
对于 sed 解决方案,请尝试:
sed -E 's#(.*) (.*)#ls *| sed "h;s///;H;g;s/\n/ /;s/^/echo mv /e"#e' testFile
同样,这将 echo
mv
命令输出,检查后,删除 echo
和 运行。