将“.bad”附加(通过重命名?)到“tests/test_.*”标识的文件

将“.bad”附加(通过重命名?)到“tests/test_.*”标识的文件

我想要什么?

给定以下目录结构:

.
├── bar.py
├── hap
│   ├── bla.py
│   └── tests
│       └── test_hap.py
└── hip
    ├── testimony.py
    └── tests
        ├── foo.py
        └── test_hip.py

我想去以下地方:

.
├── bar.py
├── hap
│   ├── bla.py
│   └── tests
│       └── test_hap.py.bad
└── hip
    ├── testimony.py
    └── tests
        ├── foo.py
        └── test_hip.py.bad

因此,我想附加到位于目录中.bad以 开头的所有文件。test_tests

我尝试过什么?

从给出的提示中此主题,我尝试了以下方法:

shopt -s globstar
rename "s/tests\/test_.*/tests\/test_.*\.bad/" **

但是替换模式部分.*中的似乎是自动转义的。我怎样才能让第二个被解释为正则表达式?news/old/new.*

此外,使用test_.*\.bad$可给我以下信息:

Final $ should be \$ or $name at (eval 1) line 1, within string 

答案1

对于这样的事情,“查找”非常有用(请注意,这可能仅当您的路径没有空格时才有效)。

find /directory/path -type f -name "test_*" -exec mv {} {}.bad \;

Find 可以根据目录树进行过滤以查找您想要的内容,然后 find 的 exec 参数允许您将找到的内容替换为“{}”。

相关内容