如何用单条命令处理Errors.txt生成指定格式的mv命令行
如何用单条命令处理Errors.txt生成指定格式的mv命令行
嘿,这个需求用awk来实现最顺手了,单条命令就能搞定所有文本处理步骤,不用拼接一堆复杂的管道。直接用下面这条命令就行:
awk '{ # 替换每行开头的"Error in File "为"/mnt/HD" sub(/Error in File /, "/mnt/HD", $0); # 保存处理后的原始路径 original = $0; # 复制路径并替换最后4个字符为".webp" modified = original; sub(/....$/, ".webp", modified); # 输出最终的mv命令格式,给路径加上双引号 print "mv \"" original "\" \"" modified "\"" }' Errors.txt
命令拆解(怕你以后需要调整):
sub(/Error in File /, "/mnt/HD", $0):把当前行里的Error in File替换成/mnt/HD,处理完后当前行就是/mnt/HD/Test1/A.png这种格式。original = $0:把处理好的原始路径存到变量里,方便后面复用。sub(/....$/, ".webp", modified):匹配行尾的4个字符(比如.png或.jpg),替换成.webp,得到新的目标路径。print "mv \"" original "\" \"" modified "\"":按照要求的格式输出mv命令,用转义的双引号把路径括起来,避免空格等特殊字符出问题。
如果想把结果直接保存成可执行的脚本文件,只需要加个重定向就行:
awk '{ sub(/Error in File /, "/mnt/HD", $0); original = $0; modified = original; sub(/....$/, ".webp", modified); print "mv \"" original "\" \"" modified "\"" }' Errors.txt > mv_commands.sh
之后执行chmod +x mv_commands.sh就能直接运行这个脚本批量重命名文件啦。
备注:内容来源于stack exchange,提问作者Kryptonyx
相关产品推荐
相关产品推荐

