首页 > 解决方案 > 为每个文件创建一个文件夹

问题描述

我有不同的文件,它们的名称包含相同的模式 - 'part + (number)'。例如:

part 1.txt
part 2.txt

我想为每个文件创建一个文件夹,以与文件相同的名称命名文件夹,并将文件插入到他的匹配文件夹中。

标签: bashfiledirectory

解决方案


要移动前缀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提示文件是否应该已经存在于目录中。


推荐阅读