Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [pigrizia] concatenare tutti i files di una cartella

    Ciao a tutti, come da oggetto, e dettato da pigrizia.
    Devo concatenare tutti i files contenuti in una cartella (sono tutti files dello stesso tipo, binary files) in modo da formare un unico file "grosso".
    Il probl e' che nella cartella ci sono 77 files, e io devo concatenarli tutti!!!
    Esiste una "scorciatoia" che faccia le cose in automatico (invece di cat file0000000.dat file000000.dat ...ecc per 77 volte ecc >filelungo.dat, che se faccio cosi' scrivo una linea di comando lunghissima e rischio pure di sbagliarmi)

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    fai uno script che ha un ciclo che chiama sempre il comando che manda l'output nel file cambiando l'indice del file
    :master:


    cmq guarda un esempio di ciclo come script linux
    http://www.freeos.com/guides/lsst/ch03sec06.html
    I got the remedy

  3. #3
    ... avevo immaginato che la soluzione era uno script... ma la mia shell e' tcshrc... mentre il link che mi hai indicato e' ok per bash... conosci un link simile per tcshrc?

    Mi hanno anche suggerito di scrivere un programmino in C/C++ con la funzione system(), ma mi sembra piu' complicato, anche perche' non ho molta familiarita' con questa funzione... tanto per cominciare, io dovrei utilizzare nel ciclo una variabile intera il cui valore sia il numero di file *.DAT contenuti nella directory, ovvero l'uscita del comando "ls *.DAT | wc -w". Ad es.
    codice:
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    main(){
      int index=1;
      system ("ls *.DAT | wc -w");
      while (index<"uscita del comando ls *.DAT | wc -w"){ecc ecc
      }
      return(0);
    }
    Insomma, come posso utilizzare l'uscita del comando ls *.DAT | wc -w come variabile di controllo del ciclo?

    P.S. Se qualcuno ha gia' la soluzione bella e pronta... e' molto molto molto gradita !!! ;-)

  4. #4
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    io non sono pratico e non sono bravo con gli script, quindi ti direi di provare cosi':
    codice:
    $ cat ./* > file_concatenato
    slack? smack!

  5. #5
    Che intendi con 'concatenare'?
    Ipotizzando i file A,B,C,D vuoi che B sia aggiunto in coda ad A e C in coda ad A e così via?
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  6. #6
    codice:
    cat *.* >> GRANDE_FILE_BINARIO
    Dovrebbe funzionare su tutte le shell POSIX.
    NeapoliX GNU/Linux
    "Alla maggior parte della gente piace leggere la propria scrittura e annusare l'odore dei propri peti." (Auden)

  7. #7
    grazie a tutti per i vostri suggerimenti!
    Mi hanno consigliato anche
    codice:
    cat `ls *.DAT` > lungo.dat
    In effetti, questa istruzione, come anche quelle da voi proposte, creano un unico file, ma come posso essere sicura dell'ordine con cui i file vengono concatenati? A quanto pare, avendo eseguito alcune prove, si tratta dell'ordine alfabetico del nome del file. Qualcuno lo puo' confermare? Nel mio caso, devo ordinare dei file numerati in esadecimale
    00000001.DAT 00000019.DAT 00000028.DAT
    00000002.DAT 0000001d.DAT 0000002d.DAT
    00000012.DAT 00000021.DAT 00000033.DAT

    Posso stare tranquilla che la concatenazione avviene nell'ordine corretto?

  8. #8
    cat `ls *.DAT` > lungo.dat

    prende i files dall'elenco generato con ls, che di default fa un sort alfabetico ascendente per filename..

    fai ls e guarda se l'ordine ti va bene
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.