在bash中同时创建文件夹

3

我需要创建一些以相同名称但以数字结尾的文件夹。

用户应该输入一个数字,然后脚本将创建这些数量的文件夹。我不知道如何将数字与文件夹数量关联起来。

以下是我的脚本:

#!/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个回答

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,否则有可能会破坏反斜杠。


非常感谢!真的很有用 :) - acbernal

0

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

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

1
如果你要使用花括号扩展,就要按照它的主要意图来使用:sudo mkdir carpeta{1..10} - chepner
感谢您的帮助! - acbernal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接