在bash中同时创建文件夹

时间:2017-02-18 15:25:43

标签: linux bash shell

我需要创建一些具有相同名称但最后带有数字的文件夹。

用户应该写一个数字,脚本应该创建这些数量的文件夹。我不知道如何链接号码和号码os文件夹。

这是我的剧本

#!/bin/bash
echo "(1617S2)" A.C.B.S
pwd
date
NOM="A.C.B.S"
echo $NOM
echo -n "Introduce el numero de carpetas que quieras :"
read x
if (($x<=10)); then
echo "Son $x carpetas"
else (($ <10))
echo -n "El número de carpetas tiene que ser entre 1 i 10 :"
read x2
echo "Son $x2 carpetas"
fi
cd ..
cd /var
sudo mkdir carpetaprincipal
cd ..
cd /var/carpetaprincipal
sudo mkdir carpeta {1..10}

2 个答案:

答案 0 :(得分:2)

您可以将seqxargs一起使用来迭代并创建为输入选择的文件夹数量:

#!/bin/bash

echo "(1617S2)" A.C.B.S
pwd ; date
NOM="A.C.B.S" ; echo $NOM

function makeFolders () {
    echo -n "Introduce el numero de carpetas que quieras :"
    read -r x

    if [[ "$x" -lt 11 ]] && [[ "$x" -gt 0 ]]; then
        echo "Son $x carpetas"

        cd ../var || exit
        mkdir carpetaprincipal

        cd carpetaprincipal || exit
        seq "$x" | xargs -I{} mkdir carpeta_{} 
    fi

    if [[ "$x" -lt 1 ]] || [[ "$x" -gt 10 ]]; then
        echo "El número de carpetas tiene que ser entre 1 i 10!"
        makeFolders # you could optionally exit 1 here
    fi
}

makeFolders

您的脚本还存在其他问题,主要是逻辑没有意义。如果您输入的数量超过10或小于1,则脚本仍然允许用户创建上面低于应该允许的文件夹。将这些方法放在函数中也允许您在出现错误时返回输入行。此外,read应包含-r,否则它有可能破坏反斜杠。

答案 1 :(得分:0)

在循环变量次数时执行多个mkdir

x2=4
i=1
while [ "$i" -le "$x2" ]
  do
    sudo mkdir carpeta$1
    i=$(($i + 1))
done