Startpagina > Omgeving & hulpmiddelen > xargs

xargs -I: invoeritems omzetten naar commando-argumenten

xargs is een krachtig hulpprogramma dat invoer van de standaardinvoer leest en deze omzet in argumenten voor andere commando's. Met name de -I optie stelt u in staat om elke invoerregel te vervangen door een opgegeven placeholder-tekenreeks, wat zeer nuttig is voor het veilig verwerken van commando's, zelfs als bestandsnamen spaties of speciale tekens bevatten.

Overzicht

xargs neemt standaardinvoer die via een pipe (|) wordt doorgegeven, converteert deze naar argumenten voor andere commando's en voert deze uit. De -I optie is handig bij het uitvoeren van commando's door elke invoerregel te vervangen door een opgegeven placeholder-tekenreeks, waardoor het veilig kan omgaan met bestandsnamen, zelfs als deze spaties of speciale tekens bevatten.

Belangrijkste kenmerken

  • Converteert invoeritems naar argumenten voor andere commando's
  • Flexibele commando-uitvoering met placeholders (-I)
  • Veilige verwerking van bestandsnamen met spaties en speciale tekens
  • Ondersteuning voor parallelle verwerking (-P)

Belangrijkste opties

Het xargs-commando biedt verschillende opties, maar hier worden de belangrijkste opties geïntroduceerd die vaak samen met de -I optie worden gebruikt.

Placeholder en invoerverwerking

Uitvoeringscontrole

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`xargs` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Diverse voorbeelden van het gebruik van het xargs -I optie.

Gevonden bestanden verplaatsen naar een specifieke map

find . -name "*.txt" -print0 | xargs -0 -I {} mv {} /tmp/new_dir

Verplaatst alle bestanden met de extensie '.txt' in de huidige map naar '/tmp/new_dir'. Bestandsnamen met spaties worden veilig verwerkt.

Bestandsinhoud met specifieke tekst wijzigen

grep -l "old_text" *.txt | xargs -I {} sed -i 's/old_text/new_text/g' {}

Wijzigt 'old_text' naar 'new_text' in alle '.txt' bestanden in de huidige map. De -l optie drukt alleen de bestandsnamen af.

Bestandsnamen met spaties verwijderen

find . -name "my file.txt" -print0 | xargs -0 -I {} rm {}

Verwijdert veilig het bestand 'my file.txt' dat spaties in de bestandsnaam bevat. De combinatie van -print0 en -0 opties is belangrijk.

Afzonderlijk commando uitvoeren voor elk bestand

ls *.log | xargs -I file_name echo "Processing file: file_name"

Drukt het bericht 'Processing file: [bestandsnaam]' af voor alle '.log' bestanden in de huidige map.

Tips & Aandachtspunten

Handige tips en aandachtspunten bij het gebruik van de xargs -I optie.

xargs -I versus xargs -0

Beide opties verwerken invoeritems, maar op verschillende manieren.

  • -I (replace-str): Vervangt elke 'regel' van de invoer door een placeholder. Omdat deze wordt gescheiden door newline-tekens, kan dit problemen veroorzaken als bestandsnamen newlines bevatten.
  • -0: Gaat ervan uit dat invoeritems worden gescheiden door nul (null) tekens. Het gebruik met 'find -print0' zorgt voor de veiligste verwerking, zelfs als bestandsnamen spaties, newlines of speciale tekens bevatten.

Voorzichtigheid bij gebruik met het rm-commando

Wees zeer voorzichtig bij het uitvoeren van het 'rm'-commando met xargs. U kunt per ongeluk belangrijke bestanden verwijderen, dus overweeg eerst de uit te voeren commando's te controleren met 'echo' of de '-t' optie, of gebruik interactieve opties zoals 'rm -i'.

Gebruik van parallelle verwerking (-P)

Bij het verwerken van grote hoeveelheden bestanden of langdurige taken kan het gebruik van de '-P' optie om meerdere processen tegelijkertijd uit te voeren de verwerkingstijd aanzienlijk verkorten. Bijvoorbeeld, 'xargs -P 4' voert 4 processen parallel uit.


Hétzelfde categoriecommando