[unix] kopieren van alleen txt bestanden in meerdere dirs

Pagina: 1
Acties:

  • Stalkert
  • Registratie: Januari 2001
  • Laatst online: 06-08-2025
Ik heb een map die weer submappen bevat. Deze submappen bevatten verschillende bestanden. Nu wil ik al deze submmapen kopieren naar een andere map, maar alleen de bestanden met extensie txt moeten mee gekopieerd worden.
Iemand een idee welk commando ik hiervoor kan gebruiken? Voor de duidelijkheid de mappenstructuur moet aan worden gehouden.

[ Voor 11% gewijzigd door Stalkert op 04-11-2004 08:51 ]


  • active2
  • Registratie: Juni 2001
  • Laatst online: 26-10-2024

active2

Google is your friend

Volgens mij kan dat met find en cpio... cpio maakt nieuwe directories aan.

Vraag me even niet hoe het moet want dan moet ik de manpages erop na gaan slaan ;)

Edit: foutje... niet goed gelezen.

[ Voor 74% gewijzigd door active2 op 04-11-2004 09:02 ]

Google, Het mirakel van de 21e eeuw!!!!


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Met rsync en de --include en --exclude opties moet je een heel eind komen denk ik.

  • Nitroglycerine
  • Registratie: Januari 2002
  • Laatst online: 23:16

Nitroglycerine

Autisme: belemmering en kracht

Een find uitvoeren op de string "txt" in het hoogste directory waar alle te verplaatsen subdirs in staan, de output in een do while gooien, subdir met awk uit de gevonden string trekken, testen of nieuwe subdir al bestaat, zo niet, aanmaken, en daarna het tekstbestand verplaatsen.

Hier kon uw advertentie staan


  • Roel
  • Registratie: Februari 2000
  • Laatst online: 12-02 17:32

Roel

screen -x addict

waarschijnlijk werkt dit wel:


code:
1
find . -name '*txt' | cpio -pvm /nieuwe/dir


(not tested btw)

(Heerlijk, die duizenden mogelijkheden om iets voor elkaar te krijgen.. :) )

[ Voor 31% gewijzigd door Roel op 04-11-2004 13:51 ]

Resistance is futile (If < 1 Ohm)


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Nitroglycerine schreef op 04 november 2004 @ 10:42:
subdir met awk uit de gevonden string trekken
dirname(1)?
testen of nieuwe subdir al bestaat, zo niet, aanmaken
'mkdir -p'?

Waarom moeilijker doen dan nodig is ;).

"He took a duck in the face at two hundred and fifty knots."


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
_Squatt_ schreef op 04 november 2004 @ 15:59:
[...]

Waarom moeilijker doen dan nodig is ;).
Dat geldt net zo goed als find+mkdir als je rsync hebt :)

  • rschu68
  • Registratie: December 2000
  • Laatst online: 27-01 10:05
@roel: werk prima alleen wel -d erbij zetten om directory's aan te maken ...
find . -name '*.sfn' | cpio -dpvm /igosdata/sfn-bestanden/

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 21:31

Kees

Serveradmin / BOFH / DoC
en dan heb je 4k bestanden en houd cpio er mee op ;)

find . -iname '*txt' -exec cp -P {} $destination \;

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • rschu68
  • Registratie: December 2000
  • Laatst online: 27-01 10:05
@Kees, je bedoelt te zeggen dat jouw regel beter is om te gebruiken ?
Zo ja, prima bedankt voor de tip ...

  • rschu68
  • Registratie: December 2000
  • Laatst online: 27-01 10:05
$ find . -iname '*.sfn' -exec cp -P {} /igosdata/sfn-bestanden/
find: bad option -iname

:::>>> op een UNIX-machine dus ... Waarschijnlijk een linux-optie

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 27-01 12:55

Bergen

Spellingscontroleur

-name werkt vast wel... -iname zorgt ervoor dat naar .txt's ook .TXT's worden gekopieerd (case-insensitive dus), dus je zou ff 2x dat commando moeten geven (1 met txt en 1 met TXT)

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
$ find . -iname '*.sfn' -exec cp -P {} /igosdata/sfn-bestanden/
find: bad option -iname

:::>>> op een UNIX-machine dus ... Waarschijnlijk een linux-optie
Misschien is het handig als je vertelt wat je precies bedoelt met unix? Er zijn nog al wat varianten namelijk.

Onder linux betekent -iname dat de naam case insensitive is (gebruik anders gewoon -name). De optie -P bij cp bestaat wel onder linux, maar wat je moet gebruiken is om de directories mee aan te maken is --parents.

[edit]
Vergeet je \; aan het eind niet!

[ Voor 7% gewijzigd door JeroenE op 05-11-2004 13:31 ]


  • rschu68
  • Registratie: December 2000
  • Laatst online: 27-01 10:05
@jeroene...

Sorry, ik was iets te kort door de bocht:
HP-UX B.10.20 E 9000/821

dus :
find . -name '*.sfn' -exec cp --parents {} /igosdata/snf-bestanden

Maar hoe zit het nu dan met: "...en dan heb je 4k bestanden" (Kees)

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
Sorry, ik was iets te kort door de bocht:
HP-UX B.10.20 E 9000/821
Hm, HP-UX ken ik niet echt. Dus ik weet niet of :
find . -name '*.sfn' -exec cp --parents {} /igosdata/snf-bestanden
werkt weet ik niet, misschien moet je daar wel -P gebruiken. Kijk anders eens met man cp naar de opties die je hebt.
Maar hoe zit het nu dan met: "...en dan heb je 4k bestanden" (Kees)
Blijkbaar kan cpio maximaal 4000 bestanden vanaf de commandline lezen. Als je er meer hebt dan gaat het dus fout. Ik neem aan dat Kees zich op dat gebied een ervaringsdeskundige mag noemen ;)

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Of gewoon rsync installeren.

  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 08-02 23:13

jvhaarst

Eendracht maakt macht

Of je gooit de output via xargs.

If you don’t have enough time, stop watching TV.

Pagina: 1