如何在文件名前加上 1_ 2_ 等升序数字?

paw*_*jvn 10 command-line bash batch-rename

如何为一个目录中的文件添加数字?

在一个目录中,我有如下文件:

fileA
fileB
fileC
fileD
Run Code Online (Sandbox Code Playgroud)

我想为它们添加升序数字,如下所示:

1_fileA
2_fileB
3_fileC
4_fileD
Run Code Online (Sandbox Code Playgroud)

先感谢您。

mat*_*ure 11

解决方案之一:

cd <your dir> 然后在 bash 中运行(在命令行中复制和粘贴):

n=1; for f in *; do mv "$f" "$((n++))_$f"; done
Run Code Online (Sandbox Code Playgroud)

Bash 脚本案例:

#!/bin/bash
n=1
for f in *
do
  if [ "$f" = "rename.sh" ]
  then
    continue
  fi
  mv "$f" "$((n++))_$f"
done
Run Code Online (Sandbox Code Playgroud)

rename.sh使用要重命名的文件将其保存为目录,chmod +x rename.sh然后运行它./rename.sh


PJ *_*ngh 10

  1. 在 Nautilus 中打开您的目录。

  2. 突出显示所有文件。

  3. 右键单击,然后从上下文菜单中选择“重命名...”。

  4. 在“重命名”对话框中,单击+Add按钮。

  5. 在“自动编号”下选择“1,2,3,4”

  6. 然后,在“重命名”对话框的文本输入字段中,在“[1, 2, 3]”和“[原始文件名]”之间插入一个下划线“_”字符。

    它应该看起来像“[1, 2, 3]_[原始文件名]”

  7. 单击Rename按钮。

在重命名对话框中选择“1,2,3,4”

重命名的文件


Zan*_*nna 7

如果有超过 9 个文件,我将使用printf填充数字以获得预期的排序顺序,就像这样

n=0
for f in *
    do printf -v new "%2d$((++n))_$f"
    echo mv -v -- "$f" "$new"
done
Run Code Online (Sandbox Code Playgroud)

echo当您看到正确的结果时删除。

解释

在这一行中,do printf -v new "%2d$((++n))_$f"我们为新文件名创建格式并将其放入变量new.

%2d是一个 2 位十进制数。代替2d,您可以使用3detc 来获得另一个前导 0(如果您有超过 99 个文件)。

((++n))增加变量n(我们在脚本开始时将其设置为 0)。由于每次循环运行时都会迭代一次,因此文件的名称前缀会增加。

-v品牌mv打印的内容将被改变。

--mv语句中是为了防止开头的文件名-被解释为选项。


des*_*ert 6

这是一份工作 file-rename 安装文件重命名(又名 perl 重命名或只是rename):

file-rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
Run Code Online (Sandbox Code Playgroud)

这定义了一个变量,如果未设置则增加它(否则它将以0而不是1开头)并用每次增加的数字替换文件名的开头。您可以轻松地更改格式,例如,使其三位数(001002,...)使用"%03d_"。运行-n它只打印更改,实际执行重命名删除此标志。

示例运行

使用替代系统,rename链接到file-rename我的系统上。

$ ls -1
fileA
fileB
fileC
fileD
$ rename -n 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
rename(fileA, 1_fileA)
rename(fileB, 2_fileB)
rename(fileC, 3_fileC)
rename(fileD, 4_fileD)
$ rename 'our $i; if (!$i) {$i++}; s/^/sprintf("%d_", $i++)/e' *
$ ls -1
1_fileA
2_fileB
3_fileC
4_fileD
Run Code Online (Sandbox Code Playgroud)