博主

5秒前在线

秃头张
保护好自己的头发
博主 秃头张
博主 5秒前 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 2 人
歌曲封面 未知作品

网站已运行 1 年 220 天 13 小时 24 分

Powered by Typecho & Sunny

3 online · 16 ms

Title

使用命令-批量所有指定文件名复制到新的文件夹

秃头张

·

生活

·

Article
上次拍完婚礼后,有两千多张的照片,今天挑了一些,只记了一下照片的名称中的数字,本以为mac的文件搜索可以做到用英文逗号分隔进行快速搜索,谁知道居然做不到,那么这个时候就要动脑想一下了。

未在Windows上测试过

一定要在sudo的权限下使用命令

准备工作 1. *文件路径*

  • 我的照片存储在 /Volumes/婚礼/DCIM(包含子文件夹)。
  • 目标是将匹配的文件复制到 /Volumes/婚礼/DCIM/matched_photos
  • *编号列表*: - 我有一个逗号分隔的编号列表,保存在文本文件 /Volumes/婚礼/DCIM/numbers.txt 中,内容如下:
♾️ text 代码:
0182,0178,0168,0165,0163,...
  • 需要将这些编号转换为文件名格式:IMG_编号.CR2(例如 IMG_0182.CR2)。
  1. 环境
  • macOS 系统(我用的是 zsh shell,macOS 默认 shell)。

方案 1:直接使用文件名列表

1. 准备编号文件

确保你的编号列表已经保存为文本文件。如果没有,可以手动创建:

  • 打开“文本编辑”(TextEdit)。
  • 输入编号,例如:
♾️ text 代码:
0182,0178,0168,0165,0163,...
  • 保存为 /Volumes/婚礼/DCIM/numbers.txt(确保保存为纯文本格式,避免富文本)。

2. 将编号转换为文件名格式

我的照片文件名格式是 IMG_XXXX.CR2,所以需要将编号加上前缀 IMG_ 和后缀 .CR2。可以用文本编辑器的“查找和替换”功能:

  • 查找 ,,替换为 .CR2,IMG_
  • 手动在开头加 IMG_,结尾加 .CR2
  • 示例结果(部分):
♾️ text 代码:
IMG_0182.CR2,IMG_0178.CR2,IMG_0168.CR2,...

3. 使用终端命令搜索和复制文件

直接将文件名列表写入命令,并设置权限:

打开终端

  • Command + 空格,输入“终端”(Terminal),回车。

输入命令

将以下命令复制到终端并运行(这里只展示部分文件名,完整列表包含 151 个):

♾️ zsh 代码:
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=(IMG_0182.CR2 IMG_0178.CR2 IMG_0168.CR2 IMG_0165.CR2 IMG_0163.CR2) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "$number" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*

命令说明:

  • mkdir -p /Volumes/婚礼/DCIM/matched_photos:创建目标文件夹。
  • chmod 777 /Volumes/婚礼/DCIM/matched_photos:为目标文件夹设置 777 权限。
  • numbers=(...):定义文件名数组,直接使用转换后的文件名。
  • find /Volumes/婚礼/DCIM -type f -name "$number":在 /Volumes/婚礼/DCIM 及其子文件夹中搜索精确匹配的文件名。
  • -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \;:将找到的文件复制到新文件夹。
  • chmod 777 /Volumes/婚礼/DCIM/matched_photos/*:为复制后的所有文件设置 777 权限。

方案 2:动态读取 numbers.txt 文件

如果你的编号列表可能会变化,或者你希望更灵活地管理文件,可以利用 numbers.txt,动态读取编号并生成文件名。

1. 准备编号文件

确保 /Volumes/婚礼/DCIM/numbers.txt 已存在,内容为逗号分隔的编号:

♾️ php 代码:
0182,0178,0168,0165,0163,...

2. 使用终端命令读取和处理

以下命令会读取 numbers.txt,将编号转换为文件名格式并执行搜索,同时设置权限:

3.打开终端

  • 按 Command + 空格,输入“终端”(Terminal),回车。

4.输入命令

将以下命令复制到终端并运行:

♾️ yacas 代码:
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=($(cat /Volumes/婚礼/DCIM/numbers.txt | tr ',' ' ')) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "IMG_${number}.CR2" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*

命令说明:

  • mkdir -p /Volumes/婚礼/DCIM/matched_photos:创建目标文件夹。
  • chmod 777 /Volumes/婚礼/DCIM/matched_photos:为目标文件夹设置 777 权限。
  • numbers=($(cat /Volumes/婚礼/DCIM/numbers.txt | tr ',' ' '))
  • cat 读取 numbers.txt。
  • tr ',' ' ' 将逗号替换为空格,生成 zsh 数组。
  • for number in $numbers; do ...:遍历每个编号(例如 0182)。
  • -name "IMG_${number}.CR2":动态生成文件名,例如 IMG_0182.CR2。
  • -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \;:将找到的文件复制到新文件夹。
  • chmod 777 /Volumes/婚礼/DCIM/matched_photos/*:为复制后的所有文件设置 777 权限。

优点:

  • 如果需要更改编号,只需编辑 numbers.txt,无需修改命令。
  • 更灵活,适合动态需求。

常见问题

1. 路径错误

  • 检查磁盘是否挂载:
♾️ text 代码:
ls /Volumes/婚礼/DCIM

. 文件名不匹配

  • 查看实际文件名:
♾️ text 代码:
find /Volumes/婚礼/DCIM -type f | head -n 10

3. 子文件夹未包含

  • find 默认递归搜索子文件夹。可以测试单个文件:
♾️ text 代码:
find /Volumes/婚礼/DCIM -type f -name "IMG_0182.CR2"

4. numbers.txt 读取问题

  • 检查文件内容:
♾️ text 代码:
cat /Volumes/婚礼/DCIM/numbers.txt

5. 权限问题

  • 如果仍无法查看或编辑文件,检查权限:
♾️ text 代码:
ls -l /Volumes/婚礼/DCIM/matched_photos
文件夹如果不存在的话,请手动创建一下,我再测试的时候是已经有了文件夹的,没有文件夹的情况还没有测试过

测试截图

image-20250302230306060

后期计划

后期准备直接做个命令行运行的工具,或者是直接集成软件,虽然现在已经有很多的软件支持这些功能了

现在已有 193 次阅读,8 条评论,0 人点赞
Author:秃头张
作者
使用命令-批量所有指定文件名复制到新的文件夹
当前文章累计共 3785 字,阅读大概需要 3 分钟。
删除handsome相册文章的图片描述
2025年2月25日 · 4评论
我被中国移动认定为诈骗?
2024年2月18日 · 0评论
熊猫头AI采集详细使用教程
2024年11月5日 · 0评论
Comment:共8条
发表
  1. 头像
    @
    王丽华
    这个教程很实用,尤其是对于大量照片需要快速整理的情况。使用命令行来批量复制文件的方式,不仅提高了效率,还能避免繁琐的手动操作。不过,建议可以进一步简化命令行部分,方便初学者理解。
    · Windows · Chrome · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  2. 头像
    @

    博主

    秃头张
    这篇文章介绍了如何通过命令行在 macOS 上批量复制指定文件名的照片到新文件夹。通过准备编号列表并使用 find 命令,用户可以快速筛选和复制符合条件的文件。文章还提供了两种方案,分别是手动指定文件名和动态读取编号文件,便
    · MacOS · Chrome · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  3. 头像
    @
    王强
    这篇文章提供了一个非常实用的解决方案,帮助我快速整理婚礼照片。通过简单的终端命令,能够批量复制指定文件到新文件夹,省时省力,特别适合大量文件管理。
    · iPhone · Safari · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  4. 头像
    @
    王明杰
    这篇文章介绍的命令行批量复制文件方法很实用,尤其是对于有大量照片需要整理的情况。通过终端操作,不仅能快速处理文件,还能避免手动查找,非常节省时间!
    · Windows · Chrome · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  5. 头像
    @
    王静
    这篇文章提供了非常实用的批量文件复制方法,尤其适合处理大量照片。用命令行实现精确匹配和复制,不仅效率高,还能灵活应对不断变化的编号列表。很棒的技术分享!
    · Windows · Chrome · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  6. 头像
    @
    王明华
    这个方法真是太实用了!在大量照片中快速筛选出需要的文件,节省了很多时间。尤其是动态读取编号列表的方式,灵活性强,适应变化快。希望以后能有更多这样的技巧分享!
    · Windows · Chrome · 本机地址

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  7. 头像
    @
    夜雨听风
    这篇文章分享了如何通过终端命令批量复制指定文件,解决了在大批照片中快速定位和处理文件的问题。非常实用,尤其是对于整理大量照片的朋友!
    · iPhone · Safari · 中国广东省珠海市电信

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  8. 头像
    @
    云梦泽
    这篇文章分享了一个实用的技巧,利用终端命令批量复制指定的文件,非常适合需要处理大量照片或文件的情况。命令简单易懂,特别适合macOS用户,节省了大量手动操作的时间!
    · Windows · Chrome · 澳大利亚悉尼

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主