Portál AbcLinuxu, 10. května 2025 08:46

Dotaz: Zkopírování několika souborů ze stromu

16.11.2005 11:36 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Zkopírování několika souborů ze stromu
Přečteno: 231×
Odpovědět | Admin
Zdravím, řeším tady takovou věc. Potřeboval bych z adresáře ./src vykopírovat soubory, které nejsou *java a umístit je do adresáře ./build. Můj příkaz však nezachovává cesty -- vše nakopíruje do ./build (bez adresářů). Chtěl bych však ty adresáře zachovat. Také potřebuji adresář ./build zakaualizovat (tj kopírovat jen pokud je čas zdrojového souboru vyšší).

find ./src -type f | grep -ve '.*\(java\|MF\)' | xargs cp -u --target-directory=./build

Zkoušel jsem parametr -P, ale to asi není to pravé ořechové. Mohl by mě někdo nakopnout? Nebo to přes xargs ani nepůjde?
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.11.2005 12:19 alex
Rozbalit Rozbalit vše Re: Zkopírování několika souborů ze stromu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udelal bych to asi tak, ze xargs by spoustel jednoduchy skript, ve kterem bych pouzil 'install' a 'cp'. Takze neco jako (pishu z hlavy)
$ cat zkopiruj
#!/bin/bash
target=./build
while [ $# -gt 0 ] ; do
   src="$1"; shift
   src_dir="${src%/*}"
   dst_dir="$target/${src_dir#./src/}"
   install -d "$dst_dir"
   cp -u "$src" "$dst_dir"
done

$ find ./src -type f -not -name '*.java' -print0 | xargs -0 zkopiruj
16.11.2005 12:28 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Zkopírování několika souborů ze stromu
Namiesto skriptu zkopiruj použi cpio:

find ./src -type f -not -name '*.java' -print0 | cpio -pdmv build

16.11.2005 12:30 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Zkopírování několika souborů ze stromu
um ... asi nie -print0, ale iba -print
16.11.2005 13:07 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Zkopírování několika souborů ze stromu
Děkuji!

Konečné řešení je tedy:

find ./src -type f -not -name '*.java' -and -not -name "*.MF" -print | cpio -pdm ./build 2> /dev/null

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.