CLI:批处理文件重命名-带有内容??(例如文件中提到的特定文本)

CLI:批处理文件重命名-带有内容??(例如文件中提到的特定文本)

我想通过在文件名前面插入格式为“RXR1234567”(RXR+7 位数字)的数字(如果在文本中找到这样的数字(理想情况下只有一个))来批量重命名文件(*.txt),例如

letter_235.txt

该文件应该被称为

RXR1234567_letter_235.txt

可以从命令行 (grep、重命名) 完成此操作吗?文件位于各个子目录中。

我们将一如既往地感谢您的想法。

答案1

在根目录中尝试这个:

find -name '*.txt' -exec sh -c 'PREFIX=`grep -m 1 -oe "RXR[0-9]\{7\}" "$0"` && mv "$0" "${0%/*}/${PREFIX}_${0##*/}"' {} \;

笔记:如果文件包含多个与该模式匹配的内容,则将使用第一个。

相关内容