linux - 将文件重命名为数字,从特定数字开始

标签 linux bash shell command-line

我想将目录中的所有文件重命名为序号:

1.txt
2.txt
3.txt

等等……

这是我目前使用的代码:

ls | cat -n | while read n f; do mv "$f" "$n.txt"; done 

代码确实有效,但我需要从一个特定的数字开始。例如,我可能想从数字 49 而不是数字 1 开始。

有什么方法可以在终端(在 Mac 上)执行此操作?

最佳答案

可以使用像nl with the -v option这样的东西设置 1 以外的起始行号,但您可以只使用 Bash 功能:

i=1
for f in *; do
    [[ -f $f ]] && mv "$f" $((i++)).txt
done

其中 i 设置为您想要的初始值。

这也避免了解析 ls 的输出,即 recommended to avoid .相反,我使用 glob (*) 和测试 (-f) 来确保我实际上是在操作文件而不是目录。

关于linux - 将文件重命名为数字,从特定数字开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46550877/

相关文章:

linux - libstdc++.so.6 缺少更高版本的 GLIBCXX 和 CXXABI,无法更新

c++ - 异步的令人费解的行为

linux - 在 Bash 中使用 ZIP 存档

linux - 你用什么命令来预览任何图像

shell - sqlite3 shell 命令 '.backup' 和事务

c - 链接器如何解决动态可加载库中的重复符号?

linux - 当我在 sed 中设置 100.000 距离时,使用命令 sed 和 "Argument list too long"第一次压缩时出现 Tar 错误

linux - 将 stderr、stdout 和 stdin 重定向到管道会阻止进程运行

bash - 将字符串列表传递给 for 循环

macos - 从命令行本地打开带有 URL 参数的网页