Regex 在unix文件名中重命名子字符串
我有一大堆文件,格式如下:Regex 在unix文件名中重命名子字符串,regex,unix,rename,Regex,Unix,Rename,我有一大堆文件,格式如下: output_t00010000-0470090205_p000000.xdr output_t00010000-0470090205_p000001.xdr 等等 我真正想要的是找到所有匹配t00010000的文件,对于每个匹配该文件的文件,将t00010000-0470090205重命名为t00000000-0000000000 所以我做了这样的事情: find . -depth -name *t00010000* | xargs rename t0001000
output_t00010000-0470090205_p000000.xdr
output_t00010000-0470090205_p000001.xdr
等等
我真正想要的是找到所有匹配t00010000的文件,对于每个匹配该文件的文件,将t00010000-0470090205重命名为t00000000-0000000000
所以我做了这样的事情:
find . -depth -name *t00010000* | xargs rename t00010000-0470090205 t00000000-0000000000
当我知道子字符串的后半部分(例如0470090205)时,这可以正常工作,但此子字符串是根据我运行的模拟随机生成的,我事先不知道。所以我真正想要的是:
find . -depth -name *t00010000* | xargs rename t00010000-?????????? t00000000-0000000000
但是rename不让我用这个?字符匹配符号。我真的很难找到答案。有人能帮忙吗 重命名的参数是:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
perlexpr应该是一个将原始名称转换为新名称的Perl表达式。在您的情况下,它将是:
rename 's/t\d+-\d+/t00000000-0000000000/'
因此:
测试
重命名
的一个好方法是使用-n
选项,该选项将显示每个文件在不执行重命名操作的情况下将重命名为什么。重命名的参数有:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
perlexpr应该是一个将原始名称转换为新名称的Perl表达式。在您的情况下,它将是:
rename 's/t\d+-\d+/t00000000-0000000000/'
因此:
测试
重命名
的一个好方法是使用-n
选项,该选项将显示每个文件在不执行重命名操作的情况下将重命名为什么。重命名的参数有:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
perlexpr应该是一个将原始名称转换为新名称的Perl表达式。在您的情况下,它将是:
rename 's/t\d+-\d+/t00000000-0000000000/'
因此:
测试
重命名
的一个好方法是使用-n
选项,该选项将显示每个文件在不执行重命名操作的情况下将重命名为什么。重命名的参数有:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
perlexpr应该是一个将原始名称转换为新名称的Perl表达式。在您的情况下,它将是:
rename 's/t\d+-\d+/t00000000-0000000000/'
因此:
测试
重命名
的一个好方法是使用-n
选项,该选项将显示每个文件在不进行重命名的情况下将被重命名为什么。感谢-n提示,我以后肯定会使用它。感谢-n提示,我以后一定会使用它。感谢-n提示,我以后一定会用的。谢谢你的-n提示,我以后一定会用的。