我有一个名为 的文件夹music
,里面有所有的艺术家文件夹。有没有办法用命令在所有艺术家文件夹中创建这些文件夹:1. Albums
、2. EP
、 ?3. Singles
4. Live
答案1
你可能想在这个上面加上花括号
为了论证这一点,我们假设 ./music 不存在
在 ./music 的基本目录中,我们将使用 -p 命令在需要的地方创建子目录,并使用花括号创建一个小数组
该命令-p
是 parent 的缩写,如果更容易记住,你可以--parent
改用
mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}
如果你想尝试一下,你可以
mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}
您有嵌套表达式,您可以将括号插入到字符串中间,也可以允许子目录跟随,并且可以针对特定数组指定子目录
我建议你在某个地方创建一个文件,你可以用这样的命令制作自己的模板并为它们提供描述
访问此页面以获取更多信息https://www.linuxjournal.com/content/bash-brace-expansion和https://www.linux.com/tutorials/all-about-curly-braces-bash/
答案2
当然,在包含艺术家文件夹的音乐文件夹中执行此操作:
for artist in */; do
for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
mkdir "$artist/$folder"
done
done
您可以在 CLI 上执行此操作,也可以将其添加#!/bin/sh
为第一行并将其保存在文件中,使其成为 shell 脚本。不要忘记使文件可执行。
至于它的作用:它遍历*/
当前目录中的所有目录(),然后对于每个目录,遍历所需的子文件夹(第二个for
),然后创建所需的(相对)子文件夹。