Newsgroup: it.comp.os.linux.iniziare
Titolo: copiare escludendo alcuni files

Esiste un comando Linux per copiare da una directory ad un'altra solo i
files e le sottodirectory al di sotto di una certa dimensione, diciamo 10
Mb?
Ed esiste un comando per copiare tutti i files (e le sottodirectory)
tranne quelli con alcune estensioni, ad esempio tranne i .txt e .doc?
Grazie in anticipo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 tranne quelli con alcune estensioni, ad esempio tranne i .txt e .doc?
Di sicuro si possono fare entrambi con find, o con due tar in pipe.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 
Man find.....

 tranne quelli con alcune estensioni, ad esempio tranne i .txt e .doc?
rsync
-- 
     Programmi Mediaset: una valida alternativa all'intrattenimento
     intelligente.
     		-- L'annunciatrice Luisella Gori (Daniele Luttazzi),
     		   "Mai Dire Gol"

 Di sicuro si possono fare entrambi con find, o con due tar in pipe.
Credevo fosse tutto molto piu' semplice, e da niubbo perfetto mi sono
perso nei man di find. 
Riformulo e semplifico la domanda. Ho una directory contenente solo files
e in gran numero, e alcuni di questi .txt e .doc; come faccio a copiare
tutti tranne questi in un'altra directory, utilizzando find? 
Grazie ancora.


 copiare tutti tranne questi in un'altra directory, utilizzando find?
Una soluzione un po' più generale, adattata al tuo caso.
Siano $orig-dir e $dest-dir le directory origine e destinazione.
Allora:
find $orig-dir -maxdepth 1 -type f ! \( -iname '*.txt' -o -iname '*.doc' \) | cpio -pdm0 $dest-dir
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
http://cleanenergy.harvard.edu/
 
http://spin.fh-bielefeld.de/
 
http://www.gpugrid.net/
 

 find $orig-dir -maxdepth 1 -type f ! \( -iname '*.txt' -o -iname '*.doc' \) | cpio -pdm0 $dest-dir
Errata corrige:
find $orig-dir -maxdepth 1 -type f ! \( -iname '*.txt' -o -iname '*.doc' \) -print0 | cpio -pdm0 $dest-dir


 
Senza scomodare cpio, può usare -exec per il cp:
find $orig-dir -maxdepth 1 -type f ! \( -iname '*.txt' -o -iname '*.doc' 
\) -exec cp '{}' $dest-dir \;
PS: grazie, io mi dimentico sempre di proteggere le parentesi tonde,
abitudine ad altre regex, si vede. ;-)


 tranne quelli con alcune estensioni, ad esempio tranne i .txt e .doc?
  Si, find.  Vedi questo esempio:
[alessandro@krill]$ mkdir /tmp/uno
[alessandro@krill]$ touch /tmp/uno/{uno,due,tre,quattro}.{txt,doc,dvi,tex}
[alessandro@krill]$ ls /tmp/uno
due.doc  due.txt      quattro.tex  tre.dvi  uno.doc  uno.txt
due.dvi  quattro.doc  quattro.txt  tre.tex  uno.dvi
due.tex  quattro.dvi  tre.doc      tre.txt  uno.tex
[alessandro@krill]$ find /tmp/uno -type f \( -name '*.txt' -o -name
'*.doc' -o -print \)
/tmp/uno/quattro.tex
/tmp/uno/tre.tex
/tmp/uno/due.tex
/tmp/uno/uno.tex
/tmp/uno/quattro.dvi
/tmp/uno/tre.dvi
/tmp/uno/due.dvi
/tmp/uno/uno.dvi
[alessandro@krill]$
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.

 \) -exec cp '{}' $dest-dir \;
#Creazione test
mkdir ~/provasource
mkdir ~/provasource/dir1
mkdir ~/provasource/dir2
mkdir ~/provasource/dir3
mkdir ~/provasource/dir3/4
touch ~/provasource/copia.conf
touch ~/provasource/nocopia.txt
touch ~/provasource/nocopia.doc
touch ~/provasource/dir1/nocopia.txt
touch ~/provasource/dir2/nocopia.doc
touch ~/provasource/dir2/copia.conf
touch ~/provasource/dir3/copiaa.conf
touch ~/provasource/dir3/copia.txt.conf
touch ~/provasource/dir3/copiaredoc.conf
touch ~/provasource/dir3/'.copia.doc.txt.file con spazi nascosto.conf'
touch ~/provasource/dir3/'.nocopia.file con spazi nascosto.conf.txt'
touch ~/provasource/dir3/4/'.copia.doc.txt.file con spazi nascosto.conf'
touch ~/provasource/dir3/4/'.nocopia.file con spazi nascosto.conf.txt'
mkdir ~/provadest
Mi sembra che nessuna delle soluzioni proposte prima riesca nell'intento 
di ottenere un
~/provadest/copia.conf
~/provadest/dir1   ?? questa rimane vuota bisogna decidere se replicarla 
o meno
~/provadest/dir2/copia.conf
~/provadest/dir3/copiaa.conf
~/provadest/dir3/copia.txt.conf
~/provadest/dir3/copiaredoc.conf
~/provadest/dir3/'.copia.doc.txt.file con spazi nascosto.conf'
~/provadest/dir3/4/'.copia.doc.txt.file con spazi nascosto.conf'
Si potrebbe fare con rsync ... ma mi rimane dentro la directory sorgente
in pratica ottengo
~/provadest/provasource/copia.conf
.... ecc.
In 2 colpi + eventualmente un terzo per rimuovere ~/provadest0
rsync -r  -t -v --progress --modify-window=1 --exclude '*.txt' --exclude 
'*.doc' -i -s ~/provasource  ~/provadest0 ; mv -T 
~/provadest0/provasource/ ~/provadest
Oppure questo, ma non è in grado di creare la struttura delle directory.
Per poter funzionare ha bisogno di trovarla già pronta. Quindi anche 
questo non va in un colpo solo
find ~/provasource -type f |sed s:$(pwd)/provasource/::|egrep -v 
"(\.txt$|\.doc$)"| xargs -I{} cp  ~/provasource/{} ~/provadest/{}
pulizia
rm -rf ~/provadest0
rm -rf ~/provadest
rm -rf ~/provasource

 ~/provadest/dir1   ?? questa rimane vuota bisogna decidere se 
replicarla o meno
Naturalmente non viene replicata. L'opzione -d di cpio ricrea le 
directory solo se sono necessarie.


 Rsync
non ricordo il comando per escludere determinati pattern, ma rsync ti
ricrea la gerarchia originale delle directory senza alcuna pena.
-- 
           Pompelmo, s.m.:
           	Copricapo protettivo usato dai Vigili del Fuoco.

 ~/provadest/copia.conf
Non barare. ;-)
La domanda era diversa.
Copiare da una directory, una serie di file escludendo i txt e i.doc
Se vuoi fare una ricostruzione di directory annidate, due tar in pipe
sono la soluzione migliore.


 Copiare da una directory, una serie di file escludendo i txt e i.doc
Ops! hai ragione. Ho letto male la domanda.

 directory solo se sono necessarie.
-d è giusto che ci sia l'opzione. Con rsync mi sembra non ci sia la 
scelta e la dir viene creata anche se è vuota. Se sto replicando la 
struttura per un programma la directory anche se vuota è giusto che ci 
sia (per esempio un /chace che un programma potrebbe non essere 
progettato per ricreare o comunque una dir di un mirror di un sito). ma 
giustamente se sto facendo un backup dei miei documenti le dir vuote 
posso anche non desiderarle.

 sono la soluzione migliore.
il rasoio di Occam, questo sconosciuto. 
-- 
        Cornuto Matematico:
        	Il cornuto e' uno a cui un terzo ha sottratto la meta'.
        	Cioe':  1 = 1/3 - 1/2 .
        		-- Da it.hobby.umorismo

 provadest/home/miouser/provasource/....
Tutto dipende da dove lanci il comando (e quindi dall'output di find). Se 
lanci addirittura da dentro provasource con
find . ... 
la copia finisce direttamente in provadest/, esattamente come vuoi tu. :)
Se lo lanci da una directory sopra provasource, sotto provadest viene 
ricreato il path dalla directory di lancio fino a provasource (questo 
perché tale path fa parte dell'output di find).


 Man: command not found
Certo che te sei bastardo forte, eh? ;-)


 
ho impiegato qualche attimo a capirla
-- 
----------------------------
se conosci slackware 
conosci linux
----------------------------

 a copiare tutti tranne questi in un'altra directory
cp_no_doc() { tmpdir=tmpdir$RANDOM; 
              mkdir $tempdir;
              mv *.doc *.txt tmpdir;
              cp * $1;
              mv *.doc *.txt . ; 
              rmdir $tmpdir ; }
cd my_doc ; cp_no_doc /tmp/pippo
-- 
e di s�bito parve giorno a giorno
essere aggiunto, come quei che puote
avesse il ciel d'un altro sole addorno

 avesse il ciel d'un altro sole addorno
-- 
Vorrei andare a lavorare in Sicilia, a max 15 km dal mare. Con chi 
devo parlare? Col capomafia distrettuale? Oppure bisogna sporcarsi le 
mani e fare la tessera di FI?                      -- Marvin,  in IFQ

 ... con nome random, c'è mktemp.
Ovviamente mktemp  serve a creare file o directory temporanee

 
porc ! mi s'e' incastrato il dito sul tasto delle maiuscole