Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

find, grep e cp

85 views
Skip to first unread message

Giulio Petrucci

unread,
Apr 17, 2012, 11:16:34 AM4/17/12
to
Ciao a tutti,

ho una serie sterminata di files. Dovrei prendere tutti quelli che
contengono un determinato pattern (es: "ciao mamma, guarda come mi
diverto") e copiarli in una sola directory.

Arrivo a capire che mi servono find, grep e cp.
Ma non riesco a capire come.
Qualche link/suggerimento?

Grazie,
Giulio

--

Paolo

unread,
Apr 17, 2012, 12:16:50 PM4/17/12
to
On 17/04/12 17:16, Giulio Petrucci wrote:
> Ciao a tutti,
>
> ho una serie sterminata di files. Dovrei prendere tutti quelli che
> contengono un determinato pattern (es: "ciao mamma, guarda come mi
> diverto") e copiarli in una sola directory.

Non ricordo la sintassi esatta, ma l'idea secondo me è questa:

- con grep recursive ottieni l'elenco dei file
- con xargs su questa lista effettui la copia

ovviamente è solo così un'idea al volo, probabilmente qualcuno fornirà
una risposta più raffinata :-)

RedWiz

unread,
Apr 17, 2012, 7:17:10 PM4/17/12
to
find $DIR $OPZIONI -exec grep -q "ciao mamma, guarda come mi diverto" {}
\; -print |xargs cp -t $DESTDIR

Andrea B.

unread,
Apr 18, 2012, 3:17:37 AM4/18/12
to
find /miadirectory -name "*ciao mamma*" -exec cp "{}" /miadestinazione \;

--
In God we trust. All others must bring data
W. E. Deming

Giulio Petrucci

unread,
Apr 18, 2012, 5:04:04 AM4/18/12
to
On 18/04/2012 09:17, Andrea B. wrote:
> find /miadirectory -name "*ciao mamma*" -exec cp "{}" /miadestinazione \;

Uhm... e il grep sul contenuto del file?

ciao,
Giulio

--

min8

unread,
Apr 18, 2012, 5:13:51 AM4/18/12
to
martedì 17/04/2012 RedWiz ha scritto:
> Il Tue, 17 Apr 2012 17:16:34 +0200, Giulio Petrucci ha scritto:

>> Ciao a tutti,

>> ho una serie sterminata di files. Dovrei prendere tutti quelli che
>> contengono un determinato pattern (es: "ciao mamma, guarda come mi
>> diverto") e copiarli in una sola directory.
>>
>> Arrivo a capire che mi servono find, grep e cp. Ma non riesco a capire
>> come.
>> Qualche link/suggerimento?

> find $DIR $OPZIONI -exec grep -q "ciao mamma, guarda come mi diverto" {}
> \; -print |xargs cp -t $DESTDIR

A parte -q invece di -l, mi dici perche' non semplicemente cosi':

cd DIR_ORIGINE/
cp $(grep -E -l "ciao mamma" *) DIR_DESTINAZIONE/

--
Ciao Minotto

RedWiz

unread,
Apr 18, 2012, 5:26:17 AM4/18/12
to
1 - perchè non sei ricorsivo nell'albero delle directory (a meno di un -r
nel grep)

2 - perchè con find puoi escludere file che sicuramente sai non contenere
il payttern e che farebbero macinare grep per minuti (pe: un avi da 2G)

3 - perchè il tuo metodo fallisce con file che hanno spazi nel nome, ma
il bello è che non avendolo testato , fallisce anche il mio :) , devi
usare (nota print0 di find e -0 di xargs):

find $DIR $OPZIONI -exec grep -q "ciao mamma, guarda come mi diverto" {}
\; -print0 |xargs -0 cp -t $DESTDIR

mallin.shetland

unread,
Apr 18, 2012, 6:45:01 AM4/18/12
to
Addì martedì 17 aprile 2012 17:16 Giulio Petrucci scrisse:

> ho una serie sterminata di files.

Si dice "file" anche al plurale.



> Dovrei prendere tutti quelli che contengono un determinato
> pattern (es: "ciao mamma, guarda come mi

Cioè devi cercare l pattern *nel* *nome* del file o *nel* *contenuto*
del file?




> Qualche link/suggerimento?

cerca negli archivi del gruppo su google, ci sono parecchi
thread sullo stesso argomento.

min8

unread,
Apr 18, 2012, 7:41:31 AM4/18/12
to
mercoledì 18/04/2012 RedWiz ha scritto:

> 3 - perchè il tuo metodo fallisce con file che hanno spazi nel nome, ma
> il bello è che non avendolo testato , fallisce anche il mio :) , devi
> usare (nota print0 di find e -0 di xargs):

Sul resto che hai detto ho capito, per gli spazi aggiungo due parole
perche' e' veramente una dannazione, c'e' pieno di file .pdf o .avi o
altro che sono un disastro ecologico con Linux-UNIX, io li detoxo
tutti, ma credo che la situazione a un certo punto non potra'
continuare cosi', perche' con windows se ne fregano, mettere "_" invece
di SPAZIO evidentemente fa male alla manina, anche mettere "( ) [ ]" e'
una cosa continua, -maledetti!- non so pero' se sia possibile cambiare
il separatore SPAZIO in UNIX perche' ci capisco assai poco, pero' mi sa
che si sfascerebbe tutto il sistema - bah jella, vedremo come finira'.

--
Ciao Minotto

Andrea B.

unread,
Apr 19, 2012, 3:03:50 AM4/19/12
to
Il 18/04/2012 11:04, Giulio Petrucci ha scritto:
> On 18/04/2012 09:17, Andrea B. wrote:
>> find /miadirectory -name "*ciao mamma*" -exec cp "{}" /miadestinazione \;
>
> Uhm... e il grep sul contenuto del file?

Scusa avevo letto il post superficialmente e avevo capito che cercavi il
match sul nome del file. Comunque vede che ti hanno già risposto altri.
0 new messages