Lägger till en lista med filer i en fil med xargs-kommandot

Detta tech-recept förklarar hur man använder kommandot xargs i Korn-skalet för att arbeta med flera filer. Instruktionerna visar hur man kombinerar tio filer i en fil utan att manuellt kombinera dem med en: cat file1> bigfile, cat file2 >> bigfile etc. Användningen av det här kommandot är brett och mest användbart. Använda kommandot xargs är ett effektivt sätt att arbeta med stora mängder filer. Till exempel kan det till och med hjälpa dig att undvika "Paramellistan är för långt" när du försöker greppa mer än 1024 filer.


Följande handledning innehåller anvisningar för användningen av ett grundläggande ksh-kommando: xargs.

Om du arbetar med AIX / Unix / ksh, är det troligt att det finns gånger när du behöver göra flera procedurer med filer. Denna handledning visar hur man lägger till en lista med filer i en stor fil med två kommandon, jämfört manuellt med att kombinera dem med kattfil1> bigfile, cat file2 >> bigfile etc.

Filer / Directory
I mitt exempel kommer jag att ta innehållet i fem filer och kombinera dem i en stor fil.

Mina filer är: file1, file2, file3, file4, file5.
Den kombinerade filen kommer att kallas bigfile.dat.

Jag har också alla filer i samma katalog. (/ usr / acct / test / files /)

Först kommer vi att skapa en lista över filerna. Det här är mycket användbart när du arbetar med stora mängder filer (till exempel 1500).
För mitt exempel skulle jag skriva detta kommando:

ls | grep file> filelist

Kommandot ls listar innehållet i katalogen. Då söker jag efter vilken fil som helst fil i sitt namn och lägg till resultaten till en ny fil som heter fillista.

Nu har vi en lista över de filer vi vill kombinera till en bigfile.dat.
För att kombinera dessa filer skriver jag följande:

kattfilist | xargs katt >> bigfile.dat

Det här kommandot berättar att jag tar upp listan över filer (fillistor); och sedan för varje fil som anges, lägg till innehållet till filen bigfile.dat.

Kommandot xargs är användbart när det kombineras med röret (|). xargs låter dig arbeta med ett stort antal filer i en lista eller grep'd.

____________________
OBS:

Här är en beskrivning av xargs kommando, med tillstånd av vår AIX / KornShell Reference Manual.

Beskrivning

Den genererade kommandorängden är summan av storleken, i byte, av kommandot och varje argument som behandlas som strängar, inklusive en nullbyte-terminator för var och en av dessa strängar. Kommandot xargs begränsar kommandoradslängden. När den konstruerade kommandoraden körs, kan de kombinerade Argument- och miljölistorna inte överskrida ARG_MAX-byte. Inom denna begränsning, om du inte anger -n eller -s flaggor, är standardkommandolinjens längd åtminstone det värde som anges av LINE_MAX.

Här är några exempel på att du använder kommandot från vår manual.

För att infoga filnamn i mitten av kommandoraden skriver du in följande:

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

Den här kommandosekvensen byter namn på alla filer i den aktuella katalogen genom att lägga till .old till slutet av varje namn. -I-flaggan anger kommandot xargs för att infoga varje rad i ls-kataloglistan där {} (braces) visas. Om den aktuella katalogen innehåller filerna chap1, chap2 och chap3, konstruerar detta följande kommandon:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old

Här är ett annat exempel:
För att använda ett kommando på filer vars namn är listade i en fil anger du följande:
xargs lint -a
AIX Version 4.3 Command Reference, Volume 6 gäller för AIX Version 4.3, 3270 Host Connection Program 2.1 och 1.3.3 för AIX och Distributed SMIT 2.2 för AIX licensierade program,