Estoy trabajando en algo en lo que necesito crear un conjunto de carpetas para cada letra y número. Actualmente, estoy haciendo esto:

for x in {0..9}
do
  mkdir -p /tmp/${x}
done
for x in {a..z}
do
  mkdir -p /tmp/${x}
done

¿Hay alguna manera de hacer esta declaración más compacta e incluir todos los números y letras en una declaración do?

Además, por curiosidad, ¿hay alguna forma de hacer esto para los símbolos?

2
Cinder Biscuits 11 dic. 2016 a las 01:04
2
{0..9} {a..z}
 – 
melpomene
11 dic. 2016 a las 01:05
1
¿Entonces for x in {0..9} {a..z} para la primera línea?
 – 
Cinder Biscuits
11 dic. 2016 a las 01:07
1
La opción -p es excesiva aquí ya que /tmp existe.
 – 
Jean-François Fabre
11 dic. 2016 a las 01:07
1
Solo para aclarar, la sugerencia de @ melpomene funciona sin un bucle for: mkdir -p /tmp/{0..9} /tmp/{a..z}
 – 
Benjamin W.
11 dic. 2016 a las 01:17
1
@BenjaminW. También se puede utilizar: ... /tmp/{{0..9},{a..z}}
 – 
Andreas Louv
11 dic. 2016 a las 01:22

1 respuesta

La mejor respuesta

Puede poner ambas expresiones juntas en el ciclo for:

for x in {0..9} {a..z}; do
    mkdir -p "/tmp/${x}"
done

También puede hacerlo con un solo comando mkdir:

mkdir -p /tmp/{{0..9},{a..z}}
4
2 revs, 2 users 94% 11 dic. 2016 a las 03:43