我有一个充满图像的目录:
image0001.png
image0002.png
image0003.png
...
我想要一句俏皮话将它们重命名为(比如说)。
0001.png
0002.png
0003.png
...
我该怎么做呢?
答案1
在 Debian 及其衍生产品上,Perl 的rename
命令行工作原理类似于sed
这样:
rename -v 's/image//' ./*.png
还有一个类似这样的rename
from :util-linux
rename -- image '' *.png
答案2
如果您使用的是 Bash 或其他 POSIX 兼容 shell:
for f in *.png; do
mv -- "$f" "${f#image}"
done
答案3
zsh shell 有一个强大的批量重命名命令,称为zmv
。
首先,您需要启用zmv
以下命令(这可以进入您的~/.zshrc
)。
autoload zmv
基本语法是zmv PATTERN REPLACEMENT
.该模式是一个 shell glob 表达式。模式的某些部分可以用括号括起来。替换文本可以包含$1
、$2
等来引用模式中的第 N 个括号组。例如:
zmv 'image(*.png)' '$1'
您还可以要求 zsh 自动定义$1
、$2
等来匹配模式中的通配符:
zmv -w 'image*.png' '$1.png'
答案4
qmv
该命令qmv
打开renameutils
一个编辑器,显示包含两列的文件名列表,以制表符分隔。每行显示一个文件名,两列中的文件名相同。右列代表文件的新名称。
要进行更改,请编辑右侧的名称。在这个例子中,:%s/...
或者视觉块模式是有帮助的。
编辑器中的文件名
$ qmv *.png
在编辑器中:
image0001.png image0001.png
image0002.png image0002.png
image0003.png image0003.png
~
~
~
~
"/tmp/user/1000/qmvxWyVMs" 3L, 93C
编辑右列中的名称:(使用可视块模式从所有行中
删除前缀)image
image0001.png 0001.png
image0002.png 0002.png
image0003.png 0003.png
~
~
~
~
:wq
重命名日志:
image0001.png -> 0001.png
image0002.png -> 0002.png
image0003.png -> 0003.png
(例如Ubuntu apt-get install renameutils
:)