Chtěl bych vytvořit mnoho adresářů pomocí mkdir
. Každý název adresáře se bude skládat z předpony (řetězec) a indexu (celého čísla). Předpokládejme, že bych chtěl, aby předpona byla „s“ a indexy v rozsahu od 1 do 50. To znamená, že bych chtěl vytvořit adresáře s názvem:
s1
, s2
, … , s49
, s50
Existuje způsob, jak to udělat automaticky pomocí mkdir
? Děkujeme za váš čas.
Přijatá odpověď:
Můžete to udělat pomocí skriptu shellu.
Pure sh – to bude fungovat i na shellech před POSIX Bourne:
n=1;
max=50;
while [ "$n" -le "$max" ]; do
mkdir "s$n"
n=`expr "$n" + 1`;
done
Chcete-li vytvořit velký počet adresářů, můžete skript urychlit jeho zmenšením na jediné volání mkdir
stejně jako použití vestavěných shellů pro testování a aritmetiku. Takhle:
n=1
max=50
set -- # this sets [email protected] [the argv array] to an empty list.
while [ "$n" -le "$max" ]; do
set -- "[email protected]" "s$n" # this adds s$n to the end of [email protected]
n=$(( $n + 1 ));
done
mkdir "[email protected]"
Zsh, ksh93 nebo bash to značně usnadňují, ale měl bych zdůraznit, že to není zabudováno do mkdir
a nemusí fungovat v jiných shellech. Ve větších případech to může být také ovlivněno omezením počtu nebo celkové velikosti argumentů, které mohou být předány příkazu.
mkdir s{1..50}