将文件夹中的所有文件重命名为编号列表1.jpg 2.jpg

Yam*_*088 8 linux command-line

我有一个文件夹,里面有几个不同的随机文件名,以帮助组织我想要的这个混乱,在一个命令中将所有这些重命名为顺序,所以如果我有100个文件,它开始命名第一个文件file-1.jpg file-2.jpg等.这可能在一个命令?

Sve*_*ach 49

我能想到的最简洁的命令行是

ls | cat -n | while read n f; do mv "$f" "file-$n.jpg"; done
Run Code Online (Sandbox Code Playgroud)

ls列出当前目录中的文件并cat -n添加行号.所述while环由线读取文件行的所得编号列表,存储在变量中的行号n和变量名f,并执行重命名.


Yam*_*088 9

我能够通过编写一个bash脚本来解决我的问题

#!/bin/sh
num=1
for file in *.jpg; do
       mv "$file" "$(printf "%u" $num).jpg"
       let num=$num+1
done
Run Code Online (Sandbox Code Playgroud)

  • sh 没有 `let`。它只花了我 2 个小时的工作时间。它必须是 `#!/bin/bash` (2认同)