bash - 使用 OSX 终端在该文件夹内的第一个文件后重命名文件夹
问题描述
我有一堆文件夹,它们都具有相同的名称或迭代编号……例如 Material 01、Material 02、Material 181 等。里面有很多名称正确的视频文件。我需要将文件夹重命名为与该文件夹中的第一个文件同名(按名称排序)
解决方案
Mac 终端通常使用 bash,所以类似的东西应该可以解决问题: 在你有文件夹的目录中: 把它放在一个名为 rename.sh 的文件中,然后输入bash rename.sh
并回车:
#! /bin/bash
for dir in Material*; do
while read -rd ''; do
newname=$(basename -- "${REPLY%.*}")
break
done < <(find "$dir" -maxdepth 1 -not -name '.*' -type f -print0 | sort -z)
echo "dir:${dir} new:${newname}"
mv -n "$dir" "$newname"
done
假如说:
- 每个第一个视频都有不同的文件名
- 首先,您的意思是按字母顺序排列。
注意:文件夹将根据文件名命名,不带扩展名。但是,如果您还想将扩展名添加到文件夹的新名称中,您可以将 while 循环中的第一行替换为newname=$(basename -- "$REPLY")
该解决方案还使用 忽略隐藏文件-not -name '.*'
,并且能够处理包括换行符在内的文件名。但在我看来,在文件名中使用换行符通常是个坏主意。
推荐阅读
- vue.js - Vue - 带有模板 vslots 的错误或设计
- java - 我在 JPA 查询中添加的每个谓词都嵌套在括号“()”中
- python - 在创建对象类 Python 时,如何确保用户输入正确的类型(在我的例子中是列表)
- pytorch - 在 ImageNet 中使用类的子集
- python - AttributeError:“成员”对象没有属性“客户端”
- javascript - Javascript - 如何将base64 pdf数据转换和下载为png图像?
- c# - 如何注入命名记录器通用 ILogger
使用 IServiceCollection 和 NLog 作为 ILogger 进入构造函数 - sql - Spring Data:JPA 存储库返回 Map 而不是 List?
- swift - 无论接受或拒绝媒体库权限,MPMusicController 播放/暂停 API 功能
- typescript - 对象解构:字符串没有匹配的索引签名