在bash中同时创建文件夹

问题描述:

我需要创建一些具有相同名称但末尾带有数字的文件夹。在bash中同时创建文件夹

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

这里是我的脚本

#!/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} 
+0

脚本中存在什么问题? –

你可以使用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,否则它有可能破坏反斜杠。

+0

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

做多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

+0

感谢您的帮助! – acbernal