我刚刚编写了一个脚本,该脚本生成了数百个文件并将它们存储在一个目录中~/foo
。这些文件的~/foo/X-file
范围是X
从X=1
到X=900
。我的问题是我想按数字顺序查看这些文件,但这些文件没有用零填充。因此该目录包含17-file
和544-file
例如。有没有办法用前导零填充这些文件?
答案1
cd ~/foo
for i in *-file; do
num=${i%-file}
padnum=$(printf '%03d' $num)
mv -v "$i" "${padnum}-file"
done
沿着这些思路做的事情应该可以做到。根据需要进行修改以获得精确的模式和目录。
答案2
如果您有 Perlrename
实用程序(通常称为prename
,而不是更原始的 Linux 实用程序):
rename -v 's/^([0-9]-)/00$1/; s/^([0-9]{2}-)/0$1/' *-file
- 第一个正则表达式用两个零替换单个数字 (2->002)
- 第二个用一个零替换两位数字 (33->033)
答案3
如果在您关心的目录中运行,以下内容应该在 bash 中工作。
for x in [0-9]*-file ; do mv $x `printf %03d-%s ${x%-*} ${x##*-}` ; done