bash - 为每个文件创建一个文件夹
问题描述
我有不同的文件,它们的名称包含相同的模式 - 'part + (number)'。例如:
part 1.txt
part 2.txt
我想为每个文件创建一个文件夹,以与文件相同的名称命名文件夹,并将文件插入到他的匹配文件夹中。
解决方案
要移动前缀part
包含后缀的常规文件,您可以执行以下操作:
shop -s nullglob
for file in part*.*; do
[ -f "$file" ] || continue
dir=${file%.*}
mkdir -p "$dir" && mv -i "$file" "$dir"
done
这使 Bash 的 shell 选项nullglob
能够将不匹配的模式扩展为空字符串,并且
测试会[ -f "$file" ] || continue
跳过非常规文件。该模式${file%.*}
从文件名中删除后缀。
选项-p
忽略已经存在的目录并-i
提示文件是否应该已经存在于目录中。
推荐阅读
- c# - 如何制作程序来检测实时保护是否开启?
- node.js - ReferenceError: primordials 未在 node.js 中定义
- google-apps-script - 用于 google Apps 脚本 webapps 的 google OAuth 登录
- azure - azure devops 管道中的服务器作业是什么意思?
- javascript - JQuery使用日期对对象数组进行排序
- javascript - 我们可以像 Prisma 库一样链接等待的 Promise 吗?
- python - for 循环中的变量不能递增
- python-3.x - 使用 google-slides-api 自动生成 powerpoint
- sql - 仅使用 SQL 使用一个查询的结果创建一个新的选择语句
- c++ - 选择一个元素的数组而不是一个对象的原因?