【发布时间】:2020-03-29 11:01:16
【问题描述】:
我有不同的文件,它们的名称包含相同的模式 - 'part + (number)'。例如:
part 1.txt
part 2.txt
我想为每个文件创建一个文件夹,以与文件相同的名称命名文件夹,并将文件插入到他的匹配文件夹中。
【问题讨论】:
-
与目录中的同名也将具有
.txt扩展名?
我有不同的文件,它们的名称包含相同的模式 - 'part + (number)'。例如:
part 1.txt
part 2.txt
我想为每个文件创建一个文件夹,以与文件相同的名称命名文件夹,并将文件插入到他的匹配文件夹中。
【问题讨论】:
.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 能够将不匹配的模式扩展为空字符串,并且
test [ -f "$file" ] || continue 跳过非常规文件。
${file%.*} 模式从文件名中删除后缀。
选项-p 忽略一个已经存在的目录,-i 提示文件是否应该已经存在于目录中。
【讨论】:
nullglob 可以被删除。这是多余的。