一尘不染

Linux Shell脚本在文件名中添加前导零

linux

我有一个约有1,700个文件的文件夹。它们都被命名为like 1.txt1497.txt,等等。我想重命名所有文件,以便所有文件名均为四位数。

即,23.txt成为0023.txt

什么是可以执行此操作的shell脚本?或一个相关的问题:如何使用grep只匹配包含以下内容的行\d.txt(即一位数字,然后是一个句点,然后是字母txt)?

这是我到目前为止的内容:

for a in [command i need help with]
do
  mv $a 000$a
done

基本上,运行该命令3次,并在其中使用命令查找一位数字,两位数字和三位数字的文件名(更改了初始零的数目)。


阅读 682

收藏
2020-06-03

共1个答案

一尘不染

尝试:

for a in [0-9]*.txt; do
    mv $a `printf %04d.%s ${a%.*} ${a##*.}`
done

[0-9]*.txt根据需要更改文件名模式()。


通用枚举重命名,不对初始文件名集做任何假设:

X=1;
for i in *.txt; do
  mv $i $(printf %04d.%s ${X%.*} ${i##*.})
  let X="$X+1"
done
2020-06-03