
Kommando för att rekursivt kopiera till en mapp
Kommando för att rekursivt kopiera till en mapp
Vad är det bästa kommandot om jag vill kopiera alla filer ( i detta fall pdf ) rekursivt i alla undermappar till en enda megamapp?


- Gunnar Hjalmarsson
- Inlägg: 3030
- Blev medlem: 08 aug 2010, 13:49
- OS: Ubuntu
- Utgåva: 22.04 Jammy Jellyfish LTS
- Ort: Göteborg
Re: Kommando för att rekursivt kopiera till en mapp
$ cp --help | grep recursively
-R, -r, --recursive copy directories recursively
$
-R, -r, --recursive copy directories recursively
$
Re: Kommando för att rekursivt kopiera till en mapp
Ursäkta men jag förstår inte hur du menar. 

- Gunnar Hjalmarsson
- Inlägg: 3030
- Blev medlem: 08 aug 2010, 13:49
- OS: Ubuntu
- Utgåva: 22.04 Jammy Jellyfish LTS
- Ort: Göteborg
Re: Kommando för att rekursivt kopiera till en mapp
Det vanligaste kommandot för kopiering är cp. Om du kör kommandot
cp --help
så ser du instruktioner för hur kommandot kan användas, inklusive en lista med flaggor. Det är alltså flaggan -R (eller -r eller --recursive) som används när man vill kopiera rekursivt. (Mitt kommando ovan selekterar ut raden där det framgår.)
cp --help
så ser du instruktioner för hur kommandot kan användas, inklusive en lista med flaggor. Det är alltså flaggan -R (eller -r eller --recursive) som används när man vill kopiera rekursivt. (Mitt kommando ovan selekterar ut raden där det framgår.)
Re: Kommando för att rekursivt kopiera till en mapp
Jag får inte till det.
Det jag vill göra är ju att bara kopiera av pdf filerna som ligger sorterade i olika mappar, till en enda mapp, inte kopiera av alltihop dvs mapparna som pdferna var sorterade i ska inte bli kopierade.

- Gunnar Hjalmarsson
- Inlägg: 3030
- Blev medlem: 08 aug 2010, 13:49
- OS: Ubuntu
- Utgåva: 22.04 Jammy Jellyfish LTS
- Ort: Göteborg
Re: Kommando för att rekursivt kopiera till en mapp
Aha, då missförstod jag. Skulle tro att kommandot find är vad du söker; se
man find
Vet inte exakt vilka argument som behöver användas. Kanske kan du räkna ut det själv, eller så kanske någon annan hoppar in och hjälper till.
man find
Vet inte exakt vilka argument som behöver användas. Kanske kan du räkna ut det själv, eller så kanske någon annan hoppar in och hjälper till.
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Kommando för att rekursivt kopiera till en mapp
Prova med:Där FROM är startmappen du vill kopiera ifrån och TO är den du vill kopiera till. Givetvis bör TO inte ligga i FROM...
Vill du t.ex kopiera från mappen "där du står" till en mapp som heter "pdf" i din hemmamapp, så kan du skriva:
Dessa kommandon kopierar alla vanliga (type f) filer, men skulle du istället vilja ange det som alla filer som heter något med *.pdf, så kan du ange detta som:Detta kommando tar både *.pdf och *.PDF (och *.pDf etc.)...
Givetvis går det också bra att kombinera "-type" och "-iname" om man vill. Kommandot "find" är kraftfullt och kan göra massor...
Kod: Markera allt
find FROM -type f -exec cp {} TO \;

Vill du t.ex kopiera från mappen "där du står" till en mapp som heter "pdf" i din hemmamapp, så kan du skriva:
Kod: Markera allt
find . -type f -exec cp {} ~/pdf \;
Kod: Markera allt
find FROM -iname \*.pdf -exec cp {} TO \;
Givetvis går det också bra att kombinera "-type" och "-iname" om man vill. Kommandot "find" är kraftfullt och kan göra massor...

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Re: Kommando för att rekursivt kopiera till en mapp
Tackar för all hjälp. Ska testa detta, återkommer med återkoppling. 

Re: Kommando för att rekursivt kopiera till en mapp
Ok hör kommer återkopplingen. Jag testade först detta:
Sedan skrev jag detta:
. 11785 pdf in i den mappen. Som ni förstår hade det varit jobbigt att göra det manuellt.
Men jag är lite oklar bara varför det senare helt korrekt skapade en mapp som allt kopierades till medan den förra kopierades till en fil. Det är någon detalj som jag inte greppat som säkert någon av er kan förklara: varför tolkas
Men då blev det ju tolkat som att allt skulle kopieras till en och samma fil så det blev ju fel. (intressant dock och se hur det visade sig).find /home/andre/Dropbox/Dokument -iname \*.pdf -exec cp {} /home/andre/MegaMapp
Sedan skrev jag detta:
Och det fungerade perfektfind /home/andre/Dropbox/Dokument -iname \*.pdf -exec cp {} ~/Test \;


som att en mapp skapas där allt ska läggas i medan~/Test
tolkas som att en fil ska skapas? ~ säger väl bara att det ska vara i hemkatalogen vilket det förra kommandot också gjorde?/home/andre/MegaMapp
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Kommando för att rekursivt kopiera till en mapp
Skillnaden består i just det att innan du kan kopiera till en mapp så måste du skapa den. Kommandot "cp" fungerar på precis samma sätt och om du skriver "cp foo bar" och "bar" inte finns innan, så skapar den en fil som heter "bar" och kopierar "foo" dit. Men om det å andra sidan redan finns en mapp som heter "bar", så kopierar den istället "foo" till den mappen...
Så antagligen hade du redan en mapp som hette ~/Test (alltså /home/andre/Test) i det andra försöket. I det första försöket så kopierade den förmodligen inte heller allt till samma fil, utan den gjorde om kopieringen för varje fil och det enda som låg där efteråt var den sista filen...
Så antagligen hade du redan en mapp som hette ~/Test (alltså /home/andre/Test) i det andra försöket. I det första försöket så kopierade den förmodligen inte heller allt till samma fil, utan den gjorde om kopieringen för varje fil och det enda som låg där efteråt var den sista filen...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Re: Kommando för att rekursivt kopiera till en mapp
Aha då förstår jag. Som du säger det fanns troligtvis redan en mapp som hette Test. Tack för all hjälp. 

- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Kommando för att rekursivt kopiera till en mapp
Här finns förresten en jätteviktig sak att tänka på också... Nu när vi kopierade filerna med "cp" så hände ju inget farligt, de låg hela tiden också kvar på sin ursprungliga plats - men, hade vi istället valt att flytta dem med "mv", så hade det första kommandot inneburit att alla filer förutom den sista hade försvunnit..... 
Den hade alltså flyttat varje fil, för att sedan skriva över den med nästa och till slut hade bara den sista filen legat där...
Men som sagt, med "cp" hände inget farligt....

Den hade alltså flyttat varje fil, för att sedan skriva över den med nästa och till slut hade bara den sista filen legat där...
Men som sagt, med "cp" hände inget farligt....

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...