如何在终端的文件夹中创建文件夹


12

我有一个文件夹music,里面有所有艺术家文件夹。有没有一种方法来创建这些文件夹:1. Albums2. EP3. Singles4. Live在命令中的所有艺术家的文件夹?

Answers:


12

当然,在音乐人文件夹所在的音乐文件夹中执行此操作:

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),然后生成所需的(相对)子文件夹。


1
哦,这很漂亮,这将载入史册;-)
史蒂夫(Steve)

18

您可能想为此戴上{curly}括号

为了这个论点,我们将假装./music不存在

在./music的基本目录中,我们将使用-p命令在需要的地方创建子目录,花括号将用于创建一个小数组。

该命令-p是父级的缩写,如果更容易记住,您可以--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-expansionhttps://www.linux.com/tutorials/all-about-curly-braces-bash/


5
我个人更喜欢这个答案,因为它不需要您以程序员的身份思考。我很少使用花括号方法,但是它更加优雅。
颚theshark

6
OP希望将4个子目录放置在的每个子目录中music,因此正确的arg mkdir将为./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1

1
仅供参考,-p是的缩写--parent
Amedee Van Gasse
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.