Aggiunta di un elenco di file a un file mediante il comando xargs

Questa ricetta tecnica spiega come usare il comando xargs nella shell di Korn per lavorare con più file. Le istruzioni mostreranno come combinare dieci file in un unico file, senza combinarli manualmente usando: cat file1> bigfile, cat file2 >> bigfile, ecc. Gli usi di questo comando sono ampi e molto utili. L'uso del comando xargs è un modo efficace per lavorare con grandi quantità di file. Ad esempio, può anche aiutare a evitare che il messaggio "l'elenco dei parametri sia troppo lungo" quando si tenta di annullare più di 1024 file.


Il seguente tutorial contiene le istruzioni per l'uso di un comando di base ksh: xargs.

Se lavori con AIX / Unix / ksh, molto probabilmente ci sono momenti in cui devi fare più procedure con i file. Questo tutorial mostrerà come aggiungere un elenco di file a un file di grandi dimensioni usando due comandi, invece di unirli manualmente usando cat file1> bigfile, cat file2 >> bigfile, ecc.

File / Directory
Nel mio esempio, ho intenzione di prendere il contenuto di cinque file e combinarli in un unico grande file.

I miei file sono: file1, file2, file3, file4, file5.
Il file combinato verrà chiamato bigfile.dat.

Inoltre, ho tutti i file nella stessa directory. (/ usr / acct / test / files /)

Innanzitutto, creeremo un elenco dei file. Ciò è estremamente utile quando si lavora con file di grandi quantità (1500, ad esempio).
Per il mio esempio, vorrei digitare questo comando:

ls | file grep> filelist

Il comando ls elencherà il contenuto della directory. Quindi cerco qualsiasi file che abbia file nel suo nome e aggiungere i risultati a un nuovo file chiamato filelist.

Ora, abbiamo un elenco dei file che vogliamo combinare in un file bigfile.dat.
Per combinare questi file, scriverò quanto segue:

filelist del gatto | gatto di xargs >> bigfile.dat

Questo comando mi dice di prendere la lista dei file (filelist); e quindi per ogni file elencato, aggiungere il contenuto al file bigfile.dat.

Il comando xargs è utile quando combinato con pipe (|). xargs ti permetterà di lavorare con un gran numero di file in una lista o in grep'd.

____________________
GLI APPUNTI:

Ecco una descrizione del xargs comando, per gentile concessione del nostro Manuale di riferimento AIX / KornShell.

Descrizione

La lunghezza della riga di comando generata è la somma della dimensione, in byte, del comando e di ogni argomento trattato come stringhe, incluso un terminatore di byte null per ognuna di queste stringhe. Il comando xargs limita la lunghezza della riga di comando. Quando viene eseguita la riga di comando costruita, gli elenchi di argomenti e argomenti combinati non possono superare i byte ARG_MAX. All'interno di questo vincolo, se non si specificano i flag -n o the, la lunghezza predefinita della riga di comando è almeno il valore specificato da LINE_MAX.

Ecco alcuni esempi di utilizzo del comando dal nostro manuale.

Per inserire i nomi dei file nel mezzo delle righe di comando, immettere quanto segue:

ls | xargs -t -I {} mv {} {} .old

Questa sequenza di comandi rinomina tutti i file nella directory corrente aggiungendo .old alla fine di ogni nome. L'opzione -I indica al comando xargs di inserire ogni riga della directory ls in cui appare {} (parentesi). Se la directory corrente contiene i file chap1, chap2 e chap3, questo costruisce i seguenti comandi:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old

Ecco un altro esempio:
Per utilizzare un comando su file i cui nomi sono elencati in un file, inserire quanto segue:
xargs lint -a
Riferimento comandi AIX versione 4.3, il volume 6 si applica a AIX versione 4.3, 3270 Host Connection Program 2.1 e 1.3.3 per AIX e Distributed SMIT 2.2 per programmi su licenza AIX,