jlc*_*lin 11 regex bash copy rename
我有一个文件结构,看起来像:
A/
2098765.1ext
2098765.2ext
2098765.3ext
2098765.4ext
12345.1ext
12345.2ext
12345.3ext
12345.4ext
B/
2056789.1ext
2056789.2ext
2056789.3ext
2056789.4ext
54321.1ext
54321.2ext
54321.3ext
54321.4ext
Run Code Online (Sandbox Code Playgroud)
我需要重命名所有以开头的文件20
与启动10
; 即,我需要重命名B/2022222.1ext
为B/1022222.1ext
我已经看到了许多关于重命名多个文件的其他问题,但似乎无法使其适用于我的情况.只是为了看看我是否能在我实际尝试复制/重命名之前弄清楚我在做什么:
for file in "*/20?????.*"; do
echo "{$file/20/10}";
done
Run Code Online (Sandbox Code Playgroud)
但我得到的只是
{*/20?????.*/20/10}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我怎么做吗?
Exp*_*lls 20
你只需要一点不正确的语法:
for file in */20?????.*; do mv $file ${file/20/10}; done
Run Code Online (Sandbox Code Playgroud)
in
.否则,不会发生文件名扩展.$
在替代应该去前支架Hai*_* Vu 10
这是一个使用find
命令的解决方案:
find . -name '20*' | while read oldname; do echo mv "$oldname" "${oldname/20/10}"; done
Run Code Online (Sandbox Code Playgroud)
这个命令实际上并不是你的出价,它只打印出应该做的事情.查看输出,如果您满意,请删除该echo
命令并将其运行为真实.