Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Asentaminen ja käyttöönotto => Aiheen aloitti: igor_2 - 24.05.07 - klo:23.24

Otsikko: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: igor_2 - 24.05.07 - klo:23.24
Miten voin kopioida tiedostot hakemistopuusta yhteen hakemistoon?

Olen käyttänyt komentoa

Koodia: [Valitse]
cp -r /home/jaetut/kuvat ./

ja sillä toki saa kuvat-hakemiston alihakemistoineen työhakemistoon, mutta haluaisin että kuvat tulevat "puusta" yhteen ja samaan hakemistoon (eli ./:ään).

Tuntuu, että cp:stä ei tämmöstä "rekursiota purkavaa" vipua löydy, taikka sitten olen vain sokea...
Otsikko: Vs: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: _Pete_ - 24.05.07 - klo:23.36
Miten voin kopioida tiedostot hakemistopuusta yhteen hakemistoon?

Olen käyttänyt komentoa

Koodia: [Valitse]
cp -r /home/jaetut/kuvat ./

ja sillä toki saa kuvat-hakemiston alihakemistoineen työhakemistoon, mutta haluaisin että kuvat tulevat "puusta" yhteen ja samaan hakemistoon (eli ./:ään).

Tuntuu, että cp:stä ei tämmöstä "rekursiota purkavaa" vipua löydy, taikka sitten olen vain sokea...

Koodia: [Valitse]
for i in `find /etc/ -type f`; do echo $i; cp $i "/tmp/test/`basename $i`"; done

Tuo kopio rekursiivisesti kaikki tiedostot /etc/ -> /tmp/test/

Siitä varmaankin osaat soveltaa omaan tarktoukseen?

Ehkäpä joku tehokkaampi tapa on olemassa, muut kertokoon sen :)

Otsikko: Vs: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: janne - 24.05.07 - klo:23.51
Ehkäpä joku tehokkaampi tapa on olemassa, muut kertokoon sen :)

ei tämä varmaan sen tehokkaampi ole, mutta äkkiseltään tuntuisi, että tuon pystyisi hoitamaan 'yhdelläkin' komennolla:
Koodia: [Valitse]
find /etc/ -type f -exec cp '{}' /tmp/test/ \;
voipi mennä pieleenkin, nyt ei ajatus oikein kulje.
Otsikko: Vs: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: igor_2 - 25.05.07 - klo:06.59
Ei mennyt pieleen Jannen ajatukset. Toimii.

Kiitos molemmille!
Otsikko: Vs: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: teetee - 02.08.07 - klo:17.12
Mitenkäs jos haluan kopioida pelkät jpg-kuvat jostain hakemistosta säilyttäen niiden omat hakemistorakenteet ja ei kopioiden nef-kuvia?

Eli hakemistorakenne on seuraavanlainen:

kuvathakemisto (dvd)
|
|-hakemisto1
|  L jpgkuvat
|  nefkuviahakemisto1ssä
|
|-hakemisto2
|  L jpgkuvat
|  nefkuviahakemisto2ssa

Tuolta kopioitaisiin jpgeet, niin että tulos olisi:

jokuhakemisto
|
|-hakemisto1
|  L jpgkuvat
|
|-hakemisto2
|  L jpgkuvat

Toivottavasti ymmärsitte.

Muokattu hakemistorakennetta, jonka muistin hieman väärin.
Otsikko: Vs: cp -r lähde kohde, lähde = puu, kohde ei ?
Kirjoitti: SuperOscar - 02.08.07 - klo:17.58
ei tämä varmaan sen tehokkaampi ole, mutta äkkiseltään tuntuisi, että tuon pystyisi hoitamaan 'yhdelläkin' komennolla:
Koodia: [Valitse]
find /etc/ -type f -exec cp '{}' /tmp/test/ \;

Tuosta findin -exec’istä kun niin varoitellaan, sama xargsia käyttäen mennee näin:

Koodia: [Valitse]
find /etc -type f | xargs -I '{}' echo cp '{}' /tmp/test
Mitenkäs jos haluan kopioida pelkät jpg-kuvat jostain hakemistosta säilyttäen niiden omat hakemistorakenteet ja ei kopioiden nef-kuvia?

Huh... Curiouser and curiouser... Pääsin aika lähelle tämmöisellä häkkyrällä:

Koodia: [Valitse]
find alkup_hakemisto -name \*.jpg | xargs -I '{}' cp --parents '{}' uusi_hakemisto
Tuo kopioi kyllä vain *.jpg-tiedostot ja säilyttää hakemistorakenteen, mutta (a) edellyttää, että uusi_hakemisto on valmiiksi olemassa, (b) kopioi hakemistorakenteen kokonaisuudessaan uusi_hakemisto-hakemiston alle. Siis:

uusi_hakemisto
  + alkup_hakemisto
       + alkup_hakemiston alla oleva rakenne

Joku muu saa jatkaa tästä :)