如何使用 Bash 创建多个目录

如何使用 Bash 创建多个目录

我想创建十个文件夹foo1java,分别名为foo2c、、foo3python等。

我尝试过这个但是它创建了太多目录:

mkdir foo{1..3}{java,c,python}

foo1c/     foo1python/  foo2java/    foo3c/     foo3python/
foo1java/  foo2c/       foo2python/  foo3java/

我只想将数字映射到语言:1java2c3python等等。

我该如何做这件事?

答案1

i=1; for j in java c python; do mkdir foo${i}${j}; i=$((i+1)); done

给出目录

foo1java
foo2c
foo3python

要添加更多语言,只需继续用空格分隔的实体填充单词列表即可python。整数计数器会保持同步。


添加:“Bashier”(但不是更好,所以我更喜欢上述解决方案,因为它更易于移植(即使在这种情况下可能并不重要)):

list=(java c python); i=1; while [ $i -lt ${#list} ]; do mkdir foo${i}${list[i-1]}; let i++; done

list只需像以前一样用更多条目填充数组即可。

答案2

这是一个静态映射,因此将其考虑出来。

mkdir foo{1java,2c,3python}

答案3

另一种可能的方法(bash)

  arr=(java c python); for((i = 1; i <= ${#arr[@]}; i++)); do mkdir foo${i}${arr[i-1]} ; done

答案4

这可能对你有用:

parallel --xapply mkdir foo{1}{2} ::: {1..3} ::: {java,c,python}

相关内容