¿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....manseguido 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 losDIRECTORYargumentos pasados . Sin embargo, los comentarios "RTFM" a veces olvidan que hay una notación para aprender.Respuestas:
Respuesta corta
mkdirtoma múltiples argumentos, simplemente ejecutafuente
Puede usar listas para crear directorios y puede volverse bastante salvaje.
Algunos ejemplos para que la gente lo piense:
test01travé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
dashque es el predeterminado/bin/shen 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á dosspaceddirectorios y `dir.junk\ diren ellistarchivo se muestran dos directoriosjunk\ydir. Me dio pánico cuando vi un\nombre en el directorio.-pbandera mencionada en otras respuestas. Si es así, ellistarchivo 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, mkdirdeberí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.txtes 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