Concatenar archivos

publicado por: Anonymous

Necesito implementar código en shell que sea capaz de concatenar varios archivos .txt en un solo archivo como si fuera una escritura única en este fichero. Además se debe identificar cuando se agregue un nuevo txt y sea capaz de concatenarlo en el mismo archivo.
Lo que tengo es esto:

cat *.txt > temperaturas.txt    

solución

puedes hacerlo asi:

    #!/bin/bash

    #carpeta y archivo de concatenaciones
    DIRECTORY="./html/"
    OUTPUT="./output.txt"
    IGNORE="PDF|pdf|exe|EXE"

    #archivo de estado
    FILES="./files.txt"

    #hacemos un for en base a los archivos en la carpeta
    for i in $(/bin/ls $DIRECTORY | grep -Ev $IGNORE);
    do
     # validamos que sea un archivo y sea legible
     if [[ -r DIRECTORY/$i ]]; then # puede ser cambiado -r por -f solo para que valide que es un archivo
        #validamos que el archivo de resultados exista!
         if [[ ! -f $FILES ]]; then
            # si no existe se le concatena el primer resultado y se le agrega a la lista
echo "[+] el archivo $i se va a concatenar a $OUTPUT";
             echo $i >> $FILES;
             cat $i >> $OUTPUT;
         fi
        # validamos si los archivos en carpeta existan en el documento de archivos listados
        # si no existe lo agregamos
         if [[ $(cat $FILES | grep $i | grep -v "grep" )  == "" ]]; then
            echo "[+] el archivo $i se va a concatenar a $OUTPUT";
            # agregamos el nuevo archivo a nuestra lista
            echo DIRECTORY/$i >> $FILES
            # agregamos el nuevo contendido al archivo de salida
            cat DIRECTORY/$i >> $OUTPUT
         fi
     else
        echo "[-] El archivo $i no se puede leer"
     fi
    done
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *