我想创建十个文件夹foo1java
,分别名为foo2c
、、foo3python
等。
我尝试过这个但是它创建了太多目录:
mkdir foo{1..3}{java,c,python}
foo1c/ foo1python/ foo2java/ foo3c/ foo3python/
foo1java/ foo2c/ foo2python/ foo3java/
我只想将数字映射到语言:1
到java
、2
到c
、3
到python
等等。
我该如何做这件事?
答案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}