GNU/Linux >> Znalost Linux >  >> Linux

Jak říct Xargs, který argument si vybrat?

Tato otázka zde již obsahuje odpovědi :Jak mohu najít soubory a poté je přesunout pomocí xargs?

(5 odpovědí)
Uzavřeno před 6 lety.

Když xargs přesměruje výstup prvního příkazu do argumentu druhého příkazu a neexistuje žádná volba, který argument pro který prvek výstupu, pak existuje pouze jeden způsob, například:

ls | xargs file  # there are as many arguments as files in the listing,
                 # but the user does not have too choose himself

nyní, pokud existuje potřeba volby:

ls | xargs file | grep image | xargs mv.....   # here the user has to 
                                               # deal  with two arguments of mv, first for source second for destination, suppose your destination argument is set already by yourself and you have to put the output into the source argument. 

Jak řeknete xargs, aby přesměroval standardní výstup prvního příkazu do vámi zvoleného argumentu druhého příkazu?

Přijatá odpověď:

Můžete použít -I k definování zástupného symbolu, který bude nahrazen každou hodnotou argumentů přiváděných do xargs . Například,

ls -1 | xargs -I '{}' echo '{}'

zavolá echo jednou na řádek z ls výstup. Často uvidíte '{}' pravděpodobně proto, že je to stejné jako find zástupný symbol.

Ve vašem případě musíte také předběžně zpracovat file výstup pro extrahování odpovídajících názvů souborů; protože existuje grep tam můžeme použít pouze awk udělat obojí a zjednodušit file také vyvolání:

file * | awk -F: '/image/ { print $1 }' | xargs -I '{}' mv '{}' destination

Pokud máte GNU mv stačí použít -t pro předání více zdrojových souborů:

file * | awk -F: '/image/ { print $1 }' | xargs mv -t destination

Linux
  1. Jak říct Gnome, aby si znovu přečetl ~/.profile?

  2. Linux – Jak zjistit, která Linuxová distribuce běží?

  3. Najít -exec + Vs Najít | Xargs:Který si vybrat?

  1. Linux – jak si vybrat distribuci?

  2. Jak zjistit, který disk je Sda a který je Sdb disk?

  3. Jak mohu v Linuxu zjistit, který proces poslal mému procesu signál

  1. Jak zjistit, že běžím v Chrootu?

  2. Jak identifikovat proces, který nemá PID?

  3. Jak říct Dolphinu, které soubory má skrýt?