【问题标题】:create a folder for each file为每个文件创建一个文件夹
【发布时间】:2020-03-29 11:01:16
【问题描述】:

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

part 1.txt
part 2.txt

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

【问题讨论】:

标签: bash file directory


【解决方案1】:

要移动前缀为 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 能够将不匹配的模式扩展为空字符串,并且
test [ -f "$file" ] || continue 跳过非常规文件。 ${file%.*} 模式从文件名中删除后缀。
选项-p 忽略一个已经存在的目录,-i 提示文件是否应该已经存在于目录中。

【讨论】:

  • 你是对的,如果存在文件检查,nullglob 可以被删除。这是多余的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 2022-01-13
  • 2018-08-09
  • 2020-03-03
  • 1970-01-01
相关资源
最近更新 更多