2 votos

Función que crea un archivo en un directorio

Tengo 4 directorios: dir1 dir2 dir3 dir4. Quiero crear un archivo en cada directorio. Sé que puedo hacer esto: toque file1.txt y luego muévalo a dir1, luego toque file2.txt y luego muévalo a dir2, pero lleva años. ¿Cómo puedo crear una función que cree un archivo de texto en cada uno de los directorios? Gracias

1voto

steeldriver Puntos 19092

Usted no necesita para crear y, a continuación, mover archivos - usted puede touch de ellos en lugar de ex.

touch dir1/file1.txt dir2/file2.txt dir3/file3.txt

Esto realmente no guardar en cualquier momento (o escribiendo), pero por supuesto puede crear una función de shell para esto - un mínimo de aplicación sería

mkfile() { touch "$1"/"$2"; }

que puede invocar como

mkfile dir1 file1.txt

aunque, por supuesto, que realmente debe incluir algunos de cheques / tratamiento de errores (tales como ¿qué hacer si $1 no es un directorio, o no existe).

Si su archivo y la estructura de directorios es siempre de la forma dirN/fileN.txt , a continuación, hay algunos mejores formas para automatizar la creación como

seq 1 3 | xargs -I{} touch dir{}/file{}.txt

o incluso (usando GNU parallel y llave de expansión)

parallel touch dir{}/file{}.txt ::: {1..3}

0voto

Hamish Puntos 11

No está seguro de lo que usted considera como 'las edades'. No existe una función que crearía 4 archivos en paralelo para usted. Suponiendo que usted está usando bash o similar, el 'más fácil' es probablemente un bucle. por ejemplo:

DIR=dir
for i in 1 2 3 4
do
  touch "${DIR}i"
done

Eso es bastante rápido en cualquier equipo que utilice. Si desea atómica 4 archivo de crear, me temo que no hay forma real de hacer esto.

Tenga en cuenta que si hay contenido en los 4 archivos, el 'más rápido' en términos de retraso entre el primer archivo que aparece y la última sería la creación de los archivos en otro lugar y, a continuación, mv de ellos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: