如何批量重命名一个文件夹中的40000个文件

2023-12-06

我需要批量重命名一个文件夹中的 40000 个文件,最后有一个数字计数,如下所示: somet.jpg 到 some_00001.jpg。我想使用重命名命令,但任何有效的命令都可以。有帮助吗?谢谢!


这些是功能强大的命令,可以非常快速地进行大量更改 - 请在一小部分数据的副本上进行测试。


方法 1 - 使用“重命名”(Perl 工具)

这应该与rename您可以使用以下命令在 macOS 上安装它:

brew install rename

命令是:

rename --dry-run -N "00001" 's/.jpg$/_$N.jpg/' *jpg

去除--dry-run实际执行该命令,而不仅仅是告诉您它会做什么。


方法 2 - 使用 GNU Parallel

或者,这应该与GNU 并行您可以使用以下命令在 macOS 上安装它:

brew install parallel

命令是:

find . -name \*.jpg -print0 | parallel -0 --dry-run mv {} {.}_{#}.jpg

where:

  • {} means “当前文件”,
  • {.} means “当前文件减去扩展名”, and
  • {#} means “(连续的)工作编号”

去除--dry-run实际执行该命令,而不仅仅是告诉您它会做什么。

您提到您想要一个偏移量,因此以下内容适用于偏移量 3:

find . -name \*.jpg -print0 | parallel -0  'printf -v new "%s_%05d.jpg" "{.}" $(({#}+3)); echo mv "{}" "$new"'

方法 3 - 无需额外软件

这应该仅使用标准的内置工具即可工作:

#!/bin/bash

for f in *.jpg; do
   # Figure out new name
   printf -v new "%s_%05d.jpg" "${f%.jpg}" $((cnt+=1))

   echo Would rename \"$f\" as \"$new\"
   #mv "$f" "$new"
done

去除#在倒数第二行中实际进行重命名。


方法 4 - 无需额外软件

这应该仅使用标准的内置工具即可工作。请注意,macOS 附带安装了 Perl,这应该会更快,因为它不会启动新的mv与之前的方法一样,对 40,000 个文件中的每个文件进行处理。相反,Perl 仅启动一次,它读取由 传递给它的以 null 结尾的文件名find然后为每个执行库调用:

find . -name \*.jpg -print0 | perl -0 -e 'while(<>){ ($sthg=$_)=~s/.jpg//; $new=sprintf("%s_%05d.jpg",$sthg,++$cnt); printf("Rename $_ as $new\n"); }'

如果看起来正确,请更改最后一行,以便它实际上执行重命名,而不仅仅是告诉您它将做什么:

find . -name \*.jpg -print0 | perl -0 -e 'while(<>){ ($sthg=$_)=~s/.jpg//; $new=sprintf("%s_%05d.jpg",$sthg,++$cnt); mv $_, $new; }'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何批量重命名一个文件夹中的40000个文件 的相关文章

  • #include 未找到

    我已经从源代码编译了 FreeImage 并安装了它 当我跑步时sudo make install在我的系统上安装以下文件 usr local include FreeImage h usr local lib libfreeimage 3
  • 为什么我无法将此纹理统一附加到我的 GLSL 片段着色器?

    在我的 Mac 应用程序中 我根据来自所连接相机的 YUV 4 2 2 数据定义了一个矩形纹理 使用标准顶点和纹理坐标 我可以将其绘制到屏幕上的矩形区域 没有任何问题 但是 我想使用 GLSL 片段着色器在 GPU 上处理这些图像帧 但在将
  • 通过浏览器获取操作系统中登录用户的用户名

    有没有可能通过网络浏览器从 os x 获取用户名 登录名 我的要求是 网络表单应通过电子邮件发送登录用户的姓名 用于内联网订阅课程 无需登录网站 这可能吗 绝对不是与所有操作系统上的所有浏览器兼容的方式
  • 是什么导致 Xamarin Forms 构建上出现“无法识别的选择器发送到类”错误?

    首先是关于我的系统的一些事情 Mac 操作系统版本 10 13 6 Xcode 版本 10 Visual Studio for Mac 7 6 6 我对 Xamarin 表单完全陌生 想要尝试和学习 我想做的只是创建一个新的 xamarin
  • 从帮助菜单中删除(或自定义)“搜索”

    我的应用程序有默认的 帮助 菜单 我删除了 帮助 条目 并添加了一个链接到我网站上的论坛的支持条目 帮助菜单笔尖如下所示 但是一旦我启动并运行应用程序 就会出现一个新的菜单项 我怎样才能让搜索消失 或者更好的是 我怎样才能让它启动一个带有参
  • 如何在 MacOS 上的 MARS 中打开保存的 .asm 文件

    我是 MIPS 的新手 我找不到如何打开我保存的文件 我在下载文件夹下保存了 asm 文件 但是当我尝试在 MARS 中打开文件并导航到同一下载文件夹时 asm 文件不会出现 我在 MacOS 上使用 MARS 如上所述 您需要在 macO
  • OS X 和 iOS Safari 历史记录。replaceState 限制抛出 SecurityError:DOM 异常 18

    在 Safari 中时replaceState 它会抛出 SecurityError DOM异常18 尝试突破 用户代理的安全策略 更多信息 https forums developer apple com thread 36650 htt
  • 在 Mac 上测试 ICE 网页设计的最佳方法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在 Mac 上设计一个网站 该设计在 Chrome Safari 和 Firefox 中运行良好 现在我将使用不同版本的 In
  • 以编程方式更改 mac osx 上的代理

    如何以编程方式更改 mac osx 上的代理设置 我对ios很流利 而且由于mac os编程类似 所以应该不会有太多问题 然而 我缺乏以编程方式创建代理更改所需的逻辑 手动调整非常容易 这是我所追求的系统偏好设置中的网络选项卡 我尝试过的
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • 完成 tmux 重置

    我想知道是否可以完全重置 tmux 主要是 UI 我尝试过删除我的 tmux conf并重新安装 tmux 它 但我总是得到与我定义的相同的状态栏 忘记终止现有会话 tmux kill server 是解决方案 致谢 Kent
  • Mac OS X 的自动热键替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 全屏 Swing 组件无法在 Mac OS X Mountain Lion 上的 Java 7 上接收键盘输入

    12 21 更新 7u10 最近发布 确认 问题仍然存在 值得庆幸的是 解决方法仍然有效 11 7 更新 我们有一个解决方法 来自 Oracle 的 Leonid Romanov 在 openjdk java net 邮件列表上提供了一些关
  • 无法在 mac 屏幕保护程序发布版本上加载图像(它适用于 Xcode 调试版本)

    我从这里得到了这个 mac 屏幕保护程序示例here https github com elpsk PaskySaver 我将其更改为显示图像而不是文本字段 问题是这样的 它可以显示任何 Xcode 对象 例如 textView textF
  • 如何阻止我的应用程序设置“隔离”位?

    从 OS X 10 7 3 开始 我的文本编辑器就在它接触的任何文件上设置 隔离 位 我的文本编辑器设计用于处理 shell 脚本 如果设置了隔离位 则无法从命令行执行 shell 脚本 直到您在 Finder 中双击它并浏览 此应用程序是
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • Brew Postgresql 启动但进程未运行

    我在 Mac 上通过 Brew 安装了 Postgres 然后 我尝试启动它 gt brew services restart postgres Stopping postgresql might take a while gt Succe
  • 在 MACOSX 上找不到“Python.h”文件,如何解决这个问题?

    pip3 安装 PyAudio 0 2 12默认为用户安装 因为普通站点包不可写 收集PyAudio 0 2 12 使用缓存的 PyAudio 0 2 12 tar gz 42 kB 安装构建依赖项 完成 获取建造轮子的要求 完成 准备元数
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • nmake 根据目标修改宏

    我有一个 Makefile mak 我可以选择从基于 C 的源代码创建 test exe 或 DLL 我正在使用 CL EXE 和 NMAKE 当目标是 TEST EXE 时 我想像这样修改我的 CFLAGS 宏 CFLAGS CFLAGS
  • sql - 如果不存在则插入

    我在执行 sql 查询时遇到问题 如果同一行尚不存在 我需要插入一行 这是我到目前为止所拥有的 DECLARE BEGIN FOR FOLDER ROW IN SELECT FOLDERID USERID FROM DATA1 FOLDER
  • 将行转换为列 SQL Server

    我想转换我的输出 就像 BachNo Release Qty A 10 A 30 A 40 B 90 B 30 我想将这个结构转变成 BatchNO Qty Release1 Qty Release2 Qty Release3 A 10 3
  • 为什么 html2text 模块会抛出 UnicodeDecodeError?

    我的 html2text 模块有问题 显示 UnicodeDecodeError UnicodeDecodeError ascii codec can t decode byte 0xbe in position 6 ordinal not
  • 如何扁平化IO(IO())?

    我刚刚学习 Haskell 和 monad 转换器 我发现自己有一个 IO IO 我想将其扁平化为 IO 我确信我做错了什么 但无法准确指出我迷路的地方 这是我正在尝试做的事情的简化示例 这是一种复杂的实现方式echo 但却很说明问题 us
  • 使用字符串作为变量的名称

    是否可以使用字符串作为变量的名称 例如 我将 x 声明为私有双精度 Private TextBox1Store TextBox2Store TextBox3Store As Double 我将使用它作为存储值的变量 此函数将标签和文本框中的
  • JDBC 与 MySQL 真的很慢,不知道为什么

    我的 Java 代码和 MySQL 数据库之间的连接速度非常慢 我不知道瓶颈在哪里 我的程序或多或少是一个聊天机器人 用户输入一些内容 我的程序将句子分成单词 并将每个单词发送到数据库 如果在那里找到东西 用户就会得到输出 数据库位于外部服
  • Heroku 没有永久文件系统?

    我目前在 Heroku 上托管的应用程序允许用户提交照片 最初 我正在考虑将这些照片存储在文件系统上 因为将它们存储在数据库中显然是不好的做法 然而 Heroku 上似乎没有永久的文件系统 只有一个临时的文件系统 这是真的吗 如果是 我在存
  • 意外的标记,react render() 函数中 return 语句中预期的“,”

    该错误是意外标记 渲染返回函数中应为 我正在使用 babel 并将此文件链接到 html 文件中 为了便于查看 我删除了注释类和组件 我还删除了评论表单组件 这是main js class App extends React Compone
  • 为什么两个方法引用被编译到两个不同的地址?

    我两次引用相同的方法 但引用不同 看这个例子 import java util function Consumer public class MethodRefTest public static void main String args
  • 如何将参数(对于 FEED_URI)传递给 Scrapy 蜘蛛的实例以动态命名输出文件

    我想将参数发送给蜘蛛并获取根据参数命名的输出 json csv F e scrapy scrapy Spider name a 类别 category1 a subcategory subcategory1我想得到 category1 su
  • 向下滚动列表视图时随机复选框被选中

    我正在尝试实施CheckBox with OnClickListener 可用的示例都在OncheckedchangeListener 一旦我选择了一个CheckBox 然后我向下滚动ListView 随机的CheckBox正在接受检查 不
  • dompdf:加载 html 文件进行渲染,不起作用

    dompdf 无法从我的网站页面生成 pdf 不过 我已经保存了该页面并将其作为简单的静态 html 文件上传 并且它有效 所以 我不知道问题是否出在 url 上 还是其他什么问题 这是我得到的错误 警告 require once home
  • 如何在 Bash 中使用 for 循环迭代目录中的文件

    我正在尝试使用 for 循环迭代目录中的所有文件 bin bash myname bandit24 cd var spool myname echo Executing and deleting all scripts in var spo
  • 如何在Python中比较两个列表中各自列表中相同索引中的元素?

    假设我有 2 个列表 a 1 2 3 4 7 1 b 1 2 4 5 7 1 我希望它创建第三个列表 其中仅包含每个列表中同一索引中相等的元素 在本例中 c 1 2 7 1 有没有一种简单的方法可以做到这一点 最简单的方法可能只是进行列表理
  • 如何使用 Spring 测试模拟的 JNDI 数据源?

    我对 Spring 相当陌生 想知道如何创建使用模拟数据源的 JUnit 测试以及如何使用 JNDI 上下文 目前 我的应用程序使用 Tomcat 中的 JNDI 上下文来检索连接 并通过该连接从数据库中检索数据 所以我想我需要模拟 JND
  • 使用Predis,如何设置(即存储)多维关联数组?

    I am 遵循本指南开始在 PHP 中使用 Predis 在本指南中 他们给出了set 存储键值对的函数 sets message to contain Hello world redis gt set message Hello worl
  • 防止 iframe “此网页不可用。”网站上显示错误

    有没有办法防止出现 此网页不可用 错误 从在另一个网站上显示的 iframe 中显示 例如 如果我有一个网站 并且想在一个框中显示我的 Facebook 粉丝 显示它的一种方法是使用 iframe 通常是 Facebook 提供的代码 但是
  • 当用户单击标题时,如何防止 Java Swing JTable 列被排序?

    我有一个包含多个列的 JTable 我想做some不可排序的列 我该怎么做 我一直在使用 Java 1 4 所以使用 TableRowSorter 不是一个选项 因为它直到 1 6 才引入 apply RowSorter仅到所需的列 在帖子
  • 如何批量重命名一个文件夹中的40000个文件

    我需要批量重命名一个文件夹中的 40000 个文件 最后有一个数字计数 如下所示 somet jpg 到 some 00001 jpg 我想使用重命名命令 但任何有效的命令都可以 有帮助吗 谢谢 这些是功能强大的命令 可以非常快速地进行大量