/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
xargs og cp
Fra : Kristian Thy


Dato : 24-03-04 22:59

Hjælp!

Jeg har en fil som jeg gerne vil have kopieret ind i alle underfoldere
i en folder. 'ls -1I index' giver mig en liste af alle folderne jeg
vil kopiere ind i (der ligger en fil i folderen som hedder index, den
vil jeg selvf. ikke have overskrevet), men jeg kan så ikke få xargs
til at makke ret:

$ ls -1I index | xargs cp ../foo.txt
-bash:  xargs: command not found

Som jeg havde forstået xargs så ville den tage hver linie i outputtet
fra ls og sætte ind som sidste argument i et funktionskald. Altså hvis
ls -1I index giver:

f1
f2
f3
....
fn

så skulle xargs så kalde

cp ../foo.txt f1
cp ../foo.txt f2
cp ../foo.txt f3
....
cp ../foo.txt fn

Hvor er jeg gået galt i byen?

\\kristian
--
"Wars are only carried on, and desperate enterprises carried out,
owing to the lack of imagination amongst the rank and file."
--Ellis Ashmead-Bartlett, at Gallipoli 1915

 
 
Thomas S. Iversen (25-03-2004)
Kommentar
Fra : Thomas S. Iversen


Dato : 25-03-04 00:08

On 2004-03-24, Kristian Thy <thy@it.edu> wrote:
> $ ls -1I index | xargs cp ../foo.txt
> -bash:  xargs: command not found
>
> Hvor er jeg gået galt i byen?

xargs er ikke installeret!?

Thomas

Kristian Thy (25-03-2004)
Kommentar
Fra : Kristian Thy


Dato : 25-03-04 01:06

Thomas S. Iversen uttered:
> On 2004-03-24, Kristian Thy <thy@it.edu> wrote:
>> $ ls -1I index | xargs cp ../foo.txt
>> -bash:  xargs: command not found
>>
>> Hvor er jeg gået galt i byen?
>
> xargs er ikke installeret!?

Jo da :)

$ xargs --help
Usage: xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]]
[-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
[--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
[--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
[--max-args=max-args] [--no-run-if-empty] [--version] [--help]
[command [initial-arguments]]

Report bugs to <bug-findutils@gnu.org>.

\\kristian
--
Unix is user friendly...It's just selective about who its friends are.

Peter Makholm (25-03-2004)
Kommentar
Fra : Peter Makholm


Dato : 25-03-04 07:47

Kristian Thy <thy@it.edu> writes:

> $ ls -1I index | xargs cp ../foo.txt
> -bash:  xargs: command not found

Bash kan tydeligvis ikke finde xargs.

> Som jeg havde forstået xargs så ville den tage hver linie i outputtet
> fra ls og sætte ind som sidste argument i et funktionskald. Altså hvis
> ls -1I index giver:
>
> f1
> f2
> f3
> ...
> fn
>
> så skulle xargs så kalde

Her vil xargs kalde:

cp ../foo.txt f1 f2 f3 f4 f5 f6 ...

og hvis du har *mange* kataloger

cp ../foo.txt fn fn+1 fn+2 fn+3 fn+4 fn+5 ...

For at opnå det du ønsker skal du bede xargs om at køre kommandoen for
hver linje xargs læser ind:

$ ls -1I index | xargs -n 1 cp ../foo.txt

Men det kræver stadigvæk at bash kan finde xargs.

--
Peter Makholm | Ladies and gentlemen, take my advice, pull down your
peter@makholm.net | pants and slide on the ice
http://hacking.dk | -- Sidney Freedman

Kristian Thy (25-03-2004)
Kommentar
Fra : Kristian Thy


Dato : 25-03-04 09:02

Peter Makholm uttered:
>> $ ls -1I index | xargs cp ../foo.txt
>> -bash:  xargs: command not found
>
> Bash kan tydeligvis ikke finde xargs.

Som skrevet i mit andet svar her i tråden kan den tydeligvis godt
finde xargs.

> Her vil xargs kalde:
>
> cp ../foo.txt f1 f2 f3 f4 f5 f6 ...
>
> og hvis du har *mange* kataloger
>
> cp ../foo.txt fn fn+1 fn+2 fn+3 fn+4 fn+5 ...

Kom igen? Den skulle da under alle omstændigheder ikke putte flere
argumenter ind i kommandoen end den får ind? I mit eksempel havde jeg
n foldere, f1-fn.

> For at opnå det du ønsker skal du bede xargs om at køre kommandoen for
> hver linje xargs læser ind:
>
> $ ls -1I index | xargs -n 1 cp ../foo.txt

Ahh...snedigt. Takker.

\\kristian
--
PROGRAMMER [n]: a device for converting coffee into software.

Peter Makholm (25-03-2004)
Kommentar
Fra : Peter Makholm


Dato : 25-03-04 09:10

Kristian Thy <thy@it.edu> writes:

> Kom igen? Den skulle da under alle omstændigheder ikke putte flere
> argumenter ind i kommandoen end den får ind? I mit eksempel havde jeg
> n foldere, f1-fn.

Ja, men nu talte jeg altså om at have *mange* foldere og så har man
altså flere end n.

--
Peter Makholm | First you fall in love with Antarctica, and then it
peter@makholm.net | breaks your heart
http://hacking.dk | -- Antarctica

Kristian Thy (25-03-2004)
Kommentar
Fra : Kristian Thy


Dato : 25-03-04 09:22

Peter Makholm uttered:
> Ja, men nu talte jeg altså om at have *mange* foldere og så har man
> altså flere end n.

LOL :D

\\kristian

Steffen Fischer (25-03-2004)
Kommentar
Fra : Steffen Fischer


Dato : 25-03-04 11:19

Kristian Thy wrote:
>
> $ ls -1I index | xargs cp ../foo.txt
> -bash: xargs: command not found
>
Jeg har af og til samme problem, som jeg håber at nogen kan forklare.
Det jeg plejer at gøre (når du nu har xargs installeret) er at kalde:

$ ls -1I index |xargs cp ../foo.txt

Altså intet mellemrum mellem pipe og xargs-kommandoen. Det hjælper måske
ikke, og det er tænkeligt at det bare er min bash, som er skør.

/Steffen

Peter Jensen (25-03-2004)
Kommentar
Fra : Peter Jensen


Dato : 25-03-04 17:57

Steffen Fischer wrote:

>> $ ls -1I index | xargs cp ../foo.txt
>> -bash: xargs: command not found
>
> Jeg har af og til samme problem, som jeg håber at nogen kan forklare.
> Det jeg plejer at gøre (når du nu har xargs installeret) er at kalde:
>
> $ ls -1I index |xargs cp ../foo.txt
>
> Altså intet mellemrum mellem pipe og xargs-kommandoen. Det hjælper
> måske ikke, og det er tænkeligt at det bare er min bash, som er skør.

Nej den er ikke skør, men du skriver for hurtigt

Jeg havde samme problem længe, men jeg kunne ikke finde ud af hvor det
kom fra. Det viste sig at jeg ikke havde sluppet AltGr helt mellem |
symbolet og mellemrum. I en xterm giver det noget der ligner et
mellemrum, men ikke er det (no-break space i ISO-8859-1). Bash tolker
den ikke som whitespace, så det bliver en del af kommandoen (som så ikke
findes). Løsning: Hold pause efter pipen!

--
PeKaJe

Microsoft products are easy to administrate. Anyone can do it!
Even if you don't want them to ... -- Jim Richardson, in COLA

Kim Hansen (26-03-2004)
Kommentar
Fra : Kim Hansen


Dato : 26-03-04 00:19

Peter Jensen <usenet@pekajemaps.homeip.net> writes:

> Steffen Fischer wrote:
>
> >> $ ls -1I index | xargs cp ../foo.txt
> >> -bash: xargs: command not found
^^ Bemærk to mellemrum, det er sådan man genkender dette problem

> > Jeg har af og til samme problem, som jeg håber at nogen kan forklare.
> > Det jeg plejer at gøre (når du nu har xargs installeret) er at kalde:
> >
> > $ ls -1I index |xargs cp ../foo.txt
> >
> > Altså intet mellemrum mellem pipe og xargs-kommandoen. Det hjælper
> > måske ikke, og det er tænkeligt at det bare er min bash, som er skør.
>
> Nej den er ikke skør, men du skriver for hurtigt
>
> Jeg havde samme problem længe, men jeg kunne ikke finde ud af hvor det
> kom fra. Det viste sig at jeg ikke havde sluppet AltGr helt mellem |
> symbolet og mellemrum. I en xterm giver det noget der ligner et
> mellemrum, men ikke er det (no-break space i ISO-8859-1). Bash tolker
> den ikke som whitespace, så det bliver en del af kommandoen (som så ikke
> findes). Løsning: Hold pause efter pipen!

Jeg har mest oplevet det med '| less', det er møg irriterende.

Jeg ved at bash ikke vil skrive tegn der ikke passer med LC_CTYPE,
f.eks. bipper den af æøå hvis ikke man sætter det til da_DK. Det burde
være muligt at pille dette møg irriterende nbsp ud af det acceptable
tegnsæt, er der nogen der har et forslag til hvor man kunne lave sådan
en ændring?

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-´` -. ;:-. | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Tlf: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Adam Sjøgren (26-03-2004)
Kommentar
Fra : Adam Sjøgren


Dato : 26-03-04 10:04

On 26 Mar 2004 00:18:31 +0100, Kim wrote:

> Jeg ved at bash ikke vil skrive tegn der ikke passer med LC_CTYPE,
> f.eks. bipper den af æøå hvis ikke man sætter det til da_DK. Det
> burde være muligt at pille dette møg irriterende nbsp ud af det
> acceptable tegnsæt, er der nogen der har et forslag til hvor man
> kunne lave sådan en ændring?

Jeg plejer at ændre Alt-SPACE til at lave et almindelig mellemrum. Så
kan jeg godt nok ikke taste #160 direkte, men det har jeg heller
aldrig brug for.

Dvs.

keycode 65 = space space space space

i /etc/X11/Xmodmap, på min maskine.


Mvh.

--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste