[Linux] weet even niet welk commando ik moet gebruiken...

Pagina: 1
Acties:

  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 26-01 18:53

iMars

Full time prutser

Topicstarter
Ik zoek me suf, maar kan niet 123 op een commando komen.

Wat wil ik. Ik heb een map met heel veel submappen en daarin veel bestanden. Ik heb van al die bestanden maar enkele duizenden nodig (het gaat om > 300.000 bestanden).

Met find vind ik de bestanden: find /media/disk/map/ -name "bestandsdeel*.ext"
Ik krijg een lijst met alle bestanden die ik zoek. Nu wil ik dat resultaat door pijplinen naar een andere commando, zodat ik deze bestanden, inclusief de paden kan kopieren naar een andere map...

Volgens mij moet dat met AWK ofzo. Maar ik kan er helemaal niet op komen, weet ook niet waar ik naar moet zoeken op google. AWK is denk fout, omdat ik via google geen resultaat kan vinden.

Dacht aan iets als
find /media/disk/map/ -name "bestandsdeel*.ext" | cp - /anderemap/

Iemand een goudentip voor me?

Koop hier mijn P1 reader :)


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

xargs

  • silverstorm
  • Registratie: Februari 2005
  • Laatst online: 25-01 22:11

silverstorm

tearing me apart

Iets als was toch te gebruiken?
find /media/disk/map/ -name "bestandsdeel*.ext" > filelist
( while read line ; do cp "$line" /anderemap/ ; done ) < filelist

Poverty stole your golden shoes, but it din’t steal your laughter
Fools memorize, smart people make notes

Het sysadmin irc-cafe


  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 26-01 18:53

iMars

Full time prutser

Topicstarter
Dat ziet er bekend uit :D Ik heb het volgende gevonden:
find . -maxdepth 1 -type f -name "*.mp3" -print0 | xargs -0 -r cp -v -p --target-directory=/home/media

Doet hetzelfde als
cp -v -p *.mp3 /home/media

Maar is dat ook met de absolute paden?

Dus bijvoorbeeld
/media/disk/map/dir/bestand.ext kopieert naar /eennieuwemap/media/disk/map/dir/bestand.ext
/media/disk/map/dir/sub/bestand.ext kopieert naar /eennieuwemap/media/disk/map/dir/sub/bestand.ext
/media/disk/map/dir2/bestand.ext kopieert naar /eennieuwemap/media/disk/map/dir2/bestand.ext
Iets als was toch te gebruiken?
find /media/disk/map/ -name "bestandsdeel*.ext" > filelist
( while read line ; do cp "$line" /anderemap/ ; done ) < filelist

Dat ga ik even proberen, thnx!

[ Voor 12% gewijzigd door iMars op 24-07-2009 00:08 ]

Koop hier mijn P1 reader :)


  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

code:
1
find . -type f -name "*.mp3" -exec cp -v -p {} /home/media;


zou ook moeten werken (of iets dergelijks)

[ Voor 10% gewijzigd door Emmeau op 24-07-2009 00:18 . Reden: ; vergeten geloof ik ]

If you choose to criticise you choose your enemies


  • goldrnr
  • Registratie: Maart 2002
  • Laatst online: 16-01 08:49
wat dacht je van -exec funcite van find?

dus:
find /media/disk/map/ -name "bestandsdeel*.ext" -exec cp {} /new/path ;

maar de xargs optie is ook heel elegant natuurlijk.
grtz,
Goldrnr

  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 26-01 18:53

iMars

Full time prutser

Topicstarter
Volgens mij heb ik een methode die werkt ...
find /media/disk/map/ -name "bestandsdeel*.ext" > filelist
cat filelist | while read fileline; do echo "cp $fileline /eenanderemap/"; done;
goldrnr schreef op vrijdag 24 juli 2009 @ 00:19:
wat dacht je van -exec funcite van find?

dus:
find /media/disk/map/ -name "bestandsdeel*.ext" -exec cp {} /new/path ;

maar de xargs optie is ook heel elegant natuurlijk.
grtz,
Goldrnr
Wordt echt tijd dat ik mijn *nix kennis ga verbeteren :$
Thnx, ga ik ook proberen, dat laatste ziet er wel strak uit.

Gevonden:
find /media/disk/xxx/ -name 'xxx*.xxx' | xargs cp -a --target-directory=/home/blabla/ --parents


find /media/disk/map/ -name "bestandsdeel*.ext" -exec cp {} /new/path ;

Gaf een probleem, maar ik zie nu dat ik de laatste ' ; ' was vergeten...

[ Voor 69% gewijzigd door iMars op 24-07-2009 00:31 ]

Koop hier mijn P1 reader :)


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Die laatste ; moet je volgens mij ook escapen

dus cp {} /newfolder \;

We are pentium of borg. Division is futile. You will be approximated.


Verwijderd

Ik doe meestal:

code:
1
find . -name "*.foo" -print0 | xargs -0 -I {} cp {} /home/stacheldraht/Desktop/


of

code:
1
find . -name "*.foo" -exec cp {} /home/stacheldraht/Desktop/ \;
Pagina: 1