Kommando för att rekursivt kopiera till en mapp

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

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

:)
Användarvisningsbild
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

Inlägg av Gunnar Hjalmarsson »

$ cp --help | grep recursively
-R, -r, --recursive copy directories recursively
$
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

Ursäkta men jag förstår inte hur du menar. :P
Användarvisningsbild
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

Inlägg av Gunnar Hjalmarsson »

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.)
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

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.
Användarvisningsbild
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

Inlägg av Gunnar Hjalmarsson »

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.
Användarvisningsbild
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

Inlägg av Osprey »

Prova med:

Kod: Markera allt

find FROM -type f -exec cp {} TO \;
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:

Kod: Markera allt

find . -type f -exec cp {} ~/pdf \;
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:

Kod: Markera allt

find FROM -iname \*.pdf -exec cp {} TO \;
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... :)
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...
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

Tackar för all hjälp. Ska testa detta, återkommer med återkoppling. :)
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

Ok hör kommer återkopplingen. Jag testade först detta:
find /home/andre/Dropbox/Dokument -iname \*.pdf -exec cp {} /home/andre/MegaMapp
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).

Sedan skrev jag detta:
find /home/andre/Dropbox/Dokument -iname \*.pdf -exec cp {} ~/Test \;
Och det fungerade perfekt ;D . 11785 pdf in i den mappen. Som ni förstår hade det varit jobbigt att göra det manuellt. :P 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
~/Test
som att en mapp skapas där allt ska läggas i medan
/home/andre/MegaMapp
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?
Användarvisningsbild
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

Inlägg av Osprey »

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...
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...
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

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. :)
Användarvisningsbild
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

Inlägg av Osprey »

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..... :o

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...
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Kommando för att rekursivt kopiera till en mapp

Inlägg av Ainigma »

Ok!
Skriv svar

Återgå till "Terminalforum"