使用重命名命令重命名文件

迈哈布纳什

请告知以下命令出了什么问题

find /tmp/dir -name "* *" -type f | rename 's/*/fixed_/g'

备注-我更喜欢用一个命令而不是循环语法来做到这一点

我想要的是通过在每个文件之前添加名称fixed_重命名/ tmp / dir下的所有文件

例如(文件)

Fevc.txt
Ddve.txt

应重命名为:

fixed_Fevc.txt
fixed_Ddve.txt
沃尔克·西格尔

临时注意:出了点问题-重命名模式无法处理带有路径的文件名;我正在修复

您的命令中有两件事是错误的:

find /tmp/dir -name "* *" -type f | rename 's/*/fixed_/g'

  • -name "* *"这不是你想要的,正确的-比赛只中有空格的文件名?

    • 解决的办法是将其排除在外;我们不想排除与某些名称匹配的文件-我们需要全部。
  • rename模式是错误的两种方式

    • 您使用了Shell Glob模式,但它必须是一个正则表达式,简而言之是regex(它可以是一些通用的perl表达式-我们忽略它,仅使用s///g
    • 固定模式将与完整名称匹配,然后将其替换为fixed_您想用来“替换”“前0个字符” fixed_这是该行的开头,与匹配^我们可以省略掉,g因为每行只需要替换一次即可。

放在一起,看起来像这样:

find /tmp/dir -type f | rename 's/^/fixed_/'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章