如何使用现有文件夹名称作为基本名称创建按顺序编号的文件夹列表



我编写了少量bash脚本。主要是根据我的需要修改脚本。在这个问题上我被难住了。我需要一个脚本,将读取文件夹内的子文件夹名称,并使基于该子文件夹名称的文件夹编号列表。

的例子:我创建了一个名为"图片"的文件夹。然后在里面新建一个名为picture-set的子文件夹我想要一个脚本来查看现有的子文件夹名称(图片集),并使10多个文件夹与顺序数字追加到文件夹名称的末尾。例:文件夹为:图片子文件夹为:picture-set

要创建:"picture-set-01"picture-set-02"picture-set-03"以此类推,直到10。或脚本中指定的数字。

文件夹结构应该是这样的:

/home/图片/picture-set

/home/图片/picture-set-01

/home/图片/picture-set-02

/home/图片/picture-set-03…等等

我无法告诉脚本如何找到基本文件夹名称来制作额外的文件夹。即:"picture-set">

或者更好的选择:是创建一个文件夹,然后根据父文件夹名称创建一组编号的子文件夹。例:/home/songs -将变成:

/home/Songs/Songs-001
/home/Songs/Songs-002
/home/Songs/Songs-003

等等

请原谅我糟糕的格式…这是我第一次在这样的论坛上提问。欢迎任何关于正确格式的链接或指针。

谢谢你的帮助。

Bash有一个参数扩展,您可以使用它来生成文件夹名称作为mkdir命令的参数:

#!/usr/bin/env bash
# Creates all directories up to 10
mkdir -p -- /home/Songs/Songs-{001..010}

如果您需要动态地更改要使用变量生成的数字范围,则此方法不是很灵活。

因此,您可以使用Bashfor循环并打印格式的名称与所需的数字数,并创建每个目录的循环:

#!/usr/bin/env bash
start_index=1
end_index=10
for ((i=start_index; i<=end_index; i++)); do
# format a dirpath with the 3-digits index
printf -v dirpath '/home/Songs/Songs-%03d' $i
mkdir -p -- "$dirpath"
done
# Prerequisite:
mkdir Pictures
cd Pictures
# Your script:
min=1
max=12
name="$(basename "$(realpath .)")"
for num in $(seq -w $min $max); do mkdir "$name-$num"; done
# Result
ls
Pictures-01  Pictures-03  Pictures-05  Pictures-07  Pictures-09  Pictures-11
Pictures-02  Pictures-04  Pictures-06  Pictures-08  Pictures-10  Pictures-12

相关内容

  • 没有找到相关文章

最新更新