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
Un poco más
¿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.
No exactamente
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
Comando para generar varios archivos.
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
Ese codigo no sirve con
Ese codigo no sirve con nombres de carpetas con espacios.
Comando para generar varios archivos.
#!/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