如果我想创建多个目录(在同一级别),然后给它提供一个以逗号分隔的目录名称列表(或类似的内容)?
答案1
简短回答
mkdir
接受多个参数,只需运行
mkdir dir_1 dir_2
答案2
您可以使用列表来创建目录,这可能会变得非常疯狂。
以下举几个例子来引发人们的思考:
mkdir sa{1..50}
mkdir -p sa{1..50}/sax{1..50}
mkdir {a-z}12345
mkdir {1,2,3}
mkdir test{01..10}
mkdir -p `date '+%y%m%d'`/{1,2,3}
mkdir -p $USER/{1,2,3}
- 从 sa1 到 sa50 的 50 个目录
- 相同,但每个目录将保存 50 次 sax1 到 sax50(如果不存在父目录,-p 将创建父目录。
- 从 a12345 到 z12345 的 26 个目录
- 逗号分隔的列表构成目录 1、2 和 3。
- 10 个目录从
test01
到test10
。 - 与 4 相同,但以当前日期作为目录,并且其中包含 1,2,3。
- 与 4 相同,但以当前用户作为目录,并在其中包含 1、2、3。
所以,如果我理解正确的话,并且您想要创建一些目录,并在其中创建新目录,那么您可以这样做:
mkdir -p sa{1..10}/{1,2,3}
并获取 sa1、sa2、…、sa10 以及每个目录 1、2 和 3。
答案3
它非常简单,让您创建一个目录结构,例如:
Websites/
static/
cs
js
templates/
html and xhtml
您可以使用如下一个命令来完成此操作:
mkdir -p Website/{static/{cs,js},templates/html\ and\ xhtml}
请小心转义目录名称中的空格。
答案4
像这样吗?(感谢 muru 提供的printf
提示)
printf '%s' 'foo,bar,baz' | xargs -d, mkdir
$ ls
$ printf '%s' 'foo,bar,baz' | xargs -d, mkdir
$ ls
bar baz foo
$
您可以将其包装成一个函数以方便使用:
function mkdir_cs {
printf '%s' "$1" | xargs -d, mkdir
}
$ ls
$ mkdir_cs 'foo,bar,baz'
$ ls
bar baz foo
$