Bash命令从所有文件名中删除前导零

Geo*_*rge 8 bash sed file-rename

我有一个目录,其中包含一堆名称如下的文件:

001234.jpg
001235.jpg
004729342.jpg
Run Code Online (Sandbox Code Playgroud)

我想从所有文件名中删除前导零,所以我将留下:

1234.jpg
1235.jpg
4729342.jpg
Run Code Online (Sandbox Code Playgroud)

我一直在尝试不同的sed配置,但我找不到合适的语法.有没有一种简单的方法可以列出目录中的所有文件,通过sed管道,然后将它们移动或复制到新文件名而不带前导零?

Sim*_*son 11

sed 本身就是错误的工具:你也需要使用一些shell脚本.

检查使用Linux页面重命名多个文件以获取一些想法.建议的一个想法是使用renameperl脚本:

rename 's/^0*//' *.jpg
Run Code Online (Sandbox Code Playgroud)


cyb*_*org 10

for FILE in `ls`; do mv $FILE `echo $FILE | sed -e 's:^0*::'`; done
Run Code Online (Sandbox Code Playgroud)

  • 你不需要(也不应该)像这样使用`ls`.这样做:`for for FILE in*` (2认同)

eph*_*ent 7

在Bash中,可能是您的默认登录shell,不需要外部命令.

shopt -s extglob
for i in 0*[^0]; do mv "$i" "${i##*(0)}"; done
Run Code Online (Sandbox Code Playgroud)