Permalänk
Hedersmedlem

Var har xargs -J tagit vägen?

Missar jag något?
Förut brukade jag använda det argumentet ganska ofta, men nu finns det inte längre, i xargs/fileutils 4.3.0.

xargs: invalid option -- J
Usage: xargs [-0prtx] ......

What gives? Jag hittar ingen "ersättare" i manualen heller.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

För oss som inte har använt "xargs -J" så fåra du gärna upplysa oss vad kommandot gör. Så kanske vi kan komma med ett förslag antingen till rätt "xargs"-kommando eller till en ersättare.

Visa signatur
Permalänk
Hedersmedlem

Från en gammal man-sida:

Citat:

-J replstr
If this option is specified, xargs will use the data read from
standard input to replace the first occurrence of replstr instead
of appending that data after all other arguments. This option
will not effect how many arguments will be read from input (-n),
or the size of the command(s) xargs will generate (-s). The
option just moves where those arguments will be placed in the
command(s) that are executed. The replstr must show up as a dis-distinct
tinct argument to xargs. It will not be recognized if, for
instance, it is in the middle of a quoted string. Furthermore,
only the first occurrence of the replstr will be replaced. For
example, the following command will copy the list of files and
directories which start with an uppercase letter in the current
directory to destdir:

/bin/ls -1d [A-Z]* | xargs -J % cp -rp % destdir

Du kan alltså den att köra in saker från en pipe "mitt i" ett kommando.

Förut:
find . -type d | xargs -J % mv % /någonstans

Nu måste jag göra nåt sånt här:
for DIR in `find . -type d`; do mv $DIR /någonstans; done

Inte mycket svårare, men xargs känns smidigare

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

Den flaggans finns inte i Linux eller Solaris xargs, googlar man efter "xargs -J" så ser man att det är en FreeBSD extension och skall motsvara -I på icke FreeBSD maskien.

Du kan inte ha letat specielt mycket i man sidan för xargs.

Citat:

xargs ... [-I replace-str] ...

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk
Hedersmedlem

Vafan.
Stämmer bra det, tackar.
Får skylla på att jag räknade med att få en bra förklaring på vad det gör - jag skulle iaf inte förstå direkt vad -I gör genom att läsa manualen om jag inte läst den gamla manualen först.

Nästa fråga är väl då, varför har Gentoo kört med xargs för FreeBSD?

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200