[英]How do I change the suffix of all files that contain a specific string
我想找到所有具有特定 DOCTYPE 的 *.xml 文件并将后缀从 .xml 更改为 .dita。
我可以列出执行此操作的文件:
find . -type f -name '*.xml' -exec grep --files-with-matches '<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA' {} +
但我不清楚如何将其传输到将执行所需重命名的 mv 命令中。
灵感来自于@betabandido 修改 xargs 中的替换字符串:
尝试添加| xargs -n 1 -i sh -c 'echo mv $1 ${1%.xml}.dita' -- {}
| xargs -n 1 -i sh -c 'echo mv $1 ${1%.xml}.dita' -- {}
,如果输出看起来| xargs -n 1 -i sh -c 'echo mv $1 ${1%.xml}.dita' -- {}
,删除echo
,假设sh
实际上是bash
因为用linux
标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.