Comando para generar varios archivos.

Imagen de chema7
0 puntos

Se trata de escribir un comando que para cada uno de los directorios del sistema cree un fichero de texto con su nombre en el interior (como texto). Los archivos generados deberán empezar con el prefijo "carpeta".

¿se os ocurre? estoy empezando con pipes y no doy con la forma.
Un saludo y gracias

Imagen de iblancasa
+1
0
-1

¿Podrías explicarte un poco mejor?
¿Qué es exactamente lo que quieres hacer? Corrígeme si me equivoco. Tu, desde terminal, escribes el comando y hará un listado de todas las carpetas del sistema, generándote un archivo de texto en el directorio que estás con dicho listado ¿Cierto?
Un saludo.

+1
0
-1
Imagen de chema7
+1
0
-1

Hola,
Desde terminal escribir el comando para que genere varios archivos de texto, uno para cada directorio de la raíz del sistema. Y que el contenido de cada archivo contenga el nombre del directorio. El nombre de cada archivo debe tener el prefijo "carpeta"

Por ejemplo: para el directorio bin que cree un archivo de texto que en su interior ponga bin, y el nombre del archivo sería "carpeta_bin" y así para todos los demás.

Creo que debe hacerse con el comando tee como mínimo, pero lo de generar un archivo para cada directorio me desconcierta, ya lo iré mirando.

Para hacer lo que comentas creo que bastaría con por ejemplo:
ls -1 | cat > fichero (como root hasta donde se, porque si se intenta desde la raíz, lanza permiso denegado)
Y con scripts no he empezado todavía Javier, pero lo voy a mirar detenidamente.

Gracias por vuestra atención.
Un saludo

+1
0
-1
Imagen de JAVIER NAVARRO ALTIMIRA
+1
0
-1

Si por ejemplo en un árbol de directorios como el que sigue se quieren crear los siguientes archivos
trabajo/caja/carpetacaja.txt
trabajo/caja/entradas/carpetaentradas.txt
trabajo/banco/debe/carpetadebe.txt
trabajo/banco/haber/carpetahaber.txt

trabajo-----caja------entradas
..............|
..............|-------banco--------debe
.........................................|
.........................................|- --haber

Algo que deberia funcionar podria ser esto, ejecutándolo en el directorio trabajo:

#!/bin/bash
for dir in `find *`
do
if [ -d $dir ]; then
touch $dir/carpeta`basename $dir`.txt
echo $dir
fi
done

echo -n "Pulsa enter para salir . . . " && read REPLY
exit

+1
0
-1
Imagen de pwned
+1
0
-1

Ese codigo no sirve con nombres de carpetas con espacios.

+1
0
-1
Imagen de JAVIER NAVARRO ALTIMIRA
+1
0
-1

#!/bin/bash
# Si se quiere ejecutar el script para que entre en carpetas
# sobre las que no se tienen permisos ejucutarlo con sudo
# El touch crea el archivo simplemente vacio
# Se podria substituir por:
# date > "$dir"/carpeta_"$nombre"
# o por cualquier comando de colocara algo en el archivo recien creado
find * | split -a 6 -l 1
for archivo in `ls`
do
linea=`wc -l $archivo | cut -f 1 -d ' '`
if [ $linea -eq 1 ]; then
dir=`cat $archivo`
if [ -d "$dir" ]; then
nombre=`basename "$dir"`
if [ ! -f "$dir"/carpeta_"$nombre" ]; then
echo "Creando $dir"/carpeta_"$nombre"
touch "$dir"/carpeta_"$nombre"
rm -v "$archivo" # borra el temporal
else
rm -v "$archivo" # borra el temporal
fi
else
if [ -f "$dir" ] && [ ! -d "$dir" ]; then
rm -v "$archivo" # borra el temporal
fi
fi
else
echo "Archivo descartado"
fi
done

echo -n "Pulsa enter para salir . . . " && read REPLY
exit

+1
0
-1