重命名REGEX在Cygwin不起作用



我在Windows 7下使用Cygwin。在我的目录中有

之类的文件

fort.100 fort.101 ... fort.1xx

我想给他们全部扩展_v1。当我尝试使用

rename实现它时

rename 's/$/_v1/' fort.*

提示出口没有任何错误,>>>>>>>>>>>。然后我尝试了

rename -e 's/$/_v1/' fort.*,弹出错误,
rename: unknown option -- e

我还尝试使用其他定界符@而不是/,没有运气。

现在,我认为这是由于表达式中的字符_(我是regex的新手(,我尝试通过_逃脱它而没有运气。再次尝试没有_,例如,

rename 's/$/v11/' fort.*-什么也没发生。

尽管我实现了

的目标

for file in fort.*; do mv $file $file_v1; done,我想知道为什么rename不起作用。

我在这里做错了什么?是因为我在cygwin上吗?

rename的手册与您的期望不符。我认为没有正则能力。

SYNOPSIS
       rename [options] expression replacement file...
DESCRIPTION
       rename  will  rename  the specified files by replacing the first occur‐
       rence of expression in their name by replacement.
OPTIONS
       -v, --verbose
              Give visual feedback which files where renamed, if any.
       -V, --version
              Display version information and exit.
       -s, --symlink
              Peform rename on symlink target
       -h, --help
              Display help text and exit.
EXAMPLES
       Given the files foo1, ..., foo9, foo10, ..., foo278, the commands
              rename foo foo0 foo?
              rename foo foo0 foo??
       will turn them into foo001, ..., foo009, foo010, ..., foo278.  And
              rename .htm .html *.htm
       will fix the extension of your html files.

您想达到的简单方法是:

for i in fort*; do mv ${i} ${i}_v1 ; done

我找到了解决方法。我将util-linux rename替换为perl rename单独的软件包。这是从GitHub提供的@subogero。
所有常见的rename表达式都在起作用。

最新更新