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

12 command-line music directory 18.04

我有一个名为musicwhere 里面有所有艺术家文件夹的文件夹。有没有办法使用命令在所有艺术家文件夹中创建这些文件夹:1. Albums, 2. EP, 3. Singles, 4. Live

Ste*_*eve 18

你可能想为这个戴上你的{花括号}

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

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

该命令-p是 parent 的缩写,如果更容易记住,您可以--parent改用

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}
Run Code Online (Sandbox Code Playgroud)

如果你想玩这个,你可以,例如

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}
Run Code Online (Sandbox Code Playgroud)

您有嵌套的表达式,您可以将大括号插入字符串的中间,您还可以允许子目录效仿,并且您可以针对特定数组指定子目录

我建议你在某个地方制作一个文件,在那里你可以用这些命令制作自己的模板并给出描述

访问此页面了解更多信息https://www.linuxjournal.com/content/bash-brace-expansionhttps://www.linux.com/tutorials/all-about-curly-braces-bash/

  • OP 想要将 4 个子目录放置在 `music` 的每个子目录本身内,因此 `mkdir` 的正确参数应该是 `./music/*/{"1. Albums","2. EP","3. Singles" ,"4.直播"}` (6认同)
  • 我个人更喜欢这个答案,因为它不需要你像程序员一样思考。我很少使用花括号方法,但它更优雅。 (5认同)

jaw*_*ark 12

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

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done
Run Code Online (Sandbox Code Playgroud)

您可以在 CLI 上执行此操作,也可以通过将其添加#!/bin/sh为第一行并将其保存在文件中来使其成为 shell 脚本。不要忘记使文件可执行。

至于它的作用:它遍历*/当前目录中的所有目录 ( ),然后对于这些目录中的每一个,遍历所需的子文件夹(第二个for),然后创建所需的(相对)子文件夹。

  • 哦,太美了,这将载入史册;-) (2认同)