¿Si quisiera crear múltiples directorios (en el mismo nivel) y luego alimentarlo con una lista separada por comas de nombres de directorio (o algo por el estilo)?
command-line
directory
coreutils
mkdir
Garganta
fuente
fuente
man mkdir
....man
seguido del nombre del comando.man mkdir
"tipo de" sugiere la posibilidad de crear múltiples directorios a la vez, no se menciona específicamente, ni cómo hacerlo....
después[DIRECTORY]
, lo que significa que el argumento puede repetirse. Entonces seDIRECTORY(ies)
refiere a todos losDIRECTORY
argumentos pasados . Sin embargo, los comentarios "RTFM" a veces olvidan que hay una notación para aprender.Respuestas:
Respuesta corta
mkdir
toma múltiples argumentos, simplemente ejecutafuente
Puede usar listas para crear directorios y puede volverse bastante salvaje.
Algunos ejemplos para que la gente lo piense:
test01
travéstest10
.Entonces, si lo entendí correctamente y desea crear algunos directorios, y dentro de ellos nuevos directorios, entonces podría hacer esto:
y obtener sa1, sa2, ..., sa10 y dentro de cada directorio 1, 2 y 3.
fuente
dash
que es el predeterminado/bin/sh
en Ubuntu.mkdir sa$(seq 0.1 0.1 1)
, todo lo que hace es crear un directorio llamado sa0.1 y el resto 0.2, 0.3, ..., 1. ¿Cómo puedo obtener la expansión de llaves decimales sin escribir la lista completa?Es muy simple, le permite crear una estructura de directorios como:
Puedes hacerlo en un solo comando como este:
Tenga cuidado de no ingresar a ningún espacio
fuente
Haga una lista de los nombres de sus directorios deseados utilizando saltos de línea en lugar de comas como separador. Guarda esa lista.
Ahora debería tener todos los directorios nombrados en su lista.
fuente
spaced dir
, creará dosspaced
directorios y `dir.junk\ dir
en ellist
archivo se muestran dos directoriosjunk\
ydir
. Me dio pánico cuando vi un\
nombre en el directorio.-p
bandera mencionada en otras respuestas. Si es así, ellist
archivo no tiene que incluir directorios principales como sus propias líneas, se detectarán y crearán automáticamente.¿Algo como esto? (gracias a muru por la informacion
printf
)Puede envolverlo en una función para facilitar su uso:
fuente
printf "%s" "$1" | xargs -d, mkdir
debería ser suficiente.¿Entonces quieres una lista de nombres de directorio separados por comas? Eso se puede hacer.
Shell + coreutils
Como todo el mundo publica oneliners, aquí también está el mío (mkdir + sustitución de parámetros más + redirección de shell).
AWK
AWK es un lenguaje de procesamiento de texto, pero tiene una
system()
función muy agradable que llamará al shell predeterminado y ejecutará los comandos entre paréntesis (que deben ser una cadena).O puede eliminar
,
congsub()
función y llamar,system("mkdir "$0)
pero eso puede ser un problema si desea crear directorios con espacios en su nombrePitón
La forma pitónica de hacer lo mismo sería leer cada línea, deshacerse del final
\n
, meter todo en una lista e iterar sobre los elementos de la lista y crear directorios por elemento de la lista. Tenga en cuenta que en el ejemplo a continuación,/home/xieerqi/dirList.txt
es la ruta completa dada a mi archivo, y creamos la ruta completa de cada nuevo directorio uniendo una cadena/home/username/
y el nombre del directorio leído de la lista. Sustituya sus propios valores según sea necesariofuente
dir{1..1000}
. Digamos que quieres hacer un directorio por nombre de usuario, por proyecto o por ubicación geográfica, como una ciudadEl comando mkdir toma múltiples argumentos simplemente ejecute como se muestra a continuación
Si desea crear varios subdirectorios, puede pasar esos argumentos en {} como se muestra a continuación (use solo comas para separar el argumento, sin espacios).
fuente