我想使用 shell 在 Linux 中创建一些文件夹。
文件夹名称应如下所示:
1-10000
10001-20000
20001-30000
30001-40000
等等。
为此我应该使用哪些命令?
简单的 bash 脚本
#!/bin/bash
mkdir 1-10000
for i in {1..5}
do
mkdir ${i}001-$(($i+1))000
done
在 bash 中对此进行了测试:
#!/bin/bash
n=1 # Your starting number
mx=40000 # Your max number
inc=10000 # The number of entries you want in each group
while [ $n -lt $mx ]; do
mkdir ${n}'-'$[$n+$inc-1]
n=$[$n+$inc]
done
在 zsh 中工作,也应该在 bash 中工作:
min=1; max=0; while ((max<40000)); do
max=$((min-1+10000));
mkdir $min-$max;
min=$((max+1))
done
这应该可以解决您的问题
for i in $(seq 0 10000 100000)
do
mkdir $(expr $i + 1)-$(expr $i + 10000)
done
以下是匿名用户提出的改进建议。我已将其添加为单独的段落(未经验证),以便将两个版本都存档。
for i in $(seq 0 10000 100000)
do
mkdir $((i + 1))-$((i + 10000))
done
这是zsh
使用新{start..end..step}
序列生成器的替代方法:
start=1
end=40000
step=10000
paste <(print -l {$start..$end..$step}) \
<(print -l {$((start + $step - 1))..$end..$step}) \
| while read n1 n2; do
mkdir $n1-$n2
done
看man mkdir
它应该用于在 unix 中创建目录。我相信这是家庭作业,而且到目前为止你还没有发布任何你尝试过的东西。
如果您正在寻找 shell 脚本,请尝试将您提到的行作为输入并围绕逗号分隔的值循环,然后将值拆分到另一个循环中,然后与拆分后的最大值进行比较,然后使用 mkdir 创建目录.algorithm 是这样的:
for each 1-10000,10001-20000,20001-30000,30001-40000
split value1-value2 into value1 and value2
for i=value1 and i <=value2
mkdir $i