[RISOLTO]Bash selezionare file simili
[RISOLTO]Bash selezionare file simili
Salve a tutti,
ho bisogno di selezionare tutti i file presenti in una cartella che hanno i primi 6 caratteri del nome identici..
Stò tentando con find + grep, ma fino ad ora con pessimi risultati...
Grazie a tutti per l'aiuo
Ciauzzzzzzzz
ho bisogno di selezionare tutti i file presenti in una cartella che hanno i primi 6 caratteri del nome identici..
Stò tentando con find + grep, ma fino ad ora con pessimi risultati...
Grazie a tutti per l'aiuo
Ciauzzzzzzzz
Ultima modifica di sverdrup il giovedì 13 marzo 2008, 13:33, modificato 1 volta in totale.
"Not everything that counts can be counted, and not everything that can be counted counts."
-
Alex M0rF3uS
- Entusiasta Emergente

- Messaggi: 2362
- Iscrizione: venerdì 13 luglio 2007, 18:43
- Contatti:
Re: Bash selezionare file simili
ls | grep primiseicaratteri* e poi lo accoppi ad un while read o for dipende da cosa devi fare
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash selezionare file simili
scusa, ma con l' asterisco?
a me funziona così:
a me funziona così:
ls | grep -e XXXX
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Bash selezionare file simili
con
la mia intenzione è quella di riuscire a selezionare i file in funzione del primi carattaeri del nome per poi processarli di 4 in 4...
In poche parole con ls | grep -e XXXX sono costretto ad inserire svariate decine di nomi di file, mentre io vorrei automatizzare il tutto,
senza dover scrivere tutte quelle righe, cioè lo scipt in poche parole dovrebbe:
leggere i file contenuti all'interno di una cartella e selezionarli in base al nome, quelli con lo stesso nome li deve processare assieme!!
Qualche idea di come si possa fare?????
Grazie mille a tutti
il problema è che io una cartella strapiena di file, 4 per ogni giorno che hanno il nome costituito dalla data + altri caratteri,ls | grep -e XXXX
la mia intenzione è quella di riuscire a selezionare i file in funzione del primi carattaeri del nome per poi processarli di 4 in 4...
In poche parole con ls | grep -e XXXX sono costretto ad inserire svariate decine di nomi di file, mentre io vorrei automatizzare il tutto,
senza dover scrivere tutte quelle righe, cioè lo scipt in poche parole dovrebbe:
leggere i file contenuti all'interno di una cartella e selezionarli in base al nome, quelli con lo stesso nome li deve processare assieme!!
Qualche idea di come si possa fare?????
Grazie mille a tutti
"Not everything that counts can be counted, and not everything that can be counted counts."
-
Alex M0rF3uS
- Entusiasta Emergente

- Messaggi: 2362
- Iscrizione: venerdì 13 luglio 2007, 18:43
- Contatti:
Re: Bash selezionare file simili
Codice: Seleziona tutto
for i in $(ls | grep -i primiseicaratteri*); do quello; che; devi; fare; done;Re: Bash selezionare file simili
Forse non mi sono spiegato,
dopo una giornata così lunga comincio a dare i numeri.
Devo riuscire a selezionare tra centinaia di nomi tutti quelli che cominciano con gli stessi caratteri a gruppi, in modo poi di farci quello che mi pare..
Ex:
123456_i.o
123456_y.o
123456_f.o
123456_e.o
133456_i.o
133456_y.o
133456_f.o
133456_e.o
etc
etc
etc
etc
Io vorrei riuscire a selezionare tutti quelli uguali....
Ma non sò come, se devo scrivere per ogni serie di quattro file il nome stò rovinato sono circa 1500 :'(
Help me please
dopo una giornata così lunga comincio a dare i numeri.
Devo riuscire a selezionare tra centinaia di nomi tutti quelli che cominciano con gli stessi caratteri a gruppi, in modo poi di farci quello che mi pare..
Ex:
123456_i.o
123456_y.o
123456_f.o
123456_e.o
133456_i.o
133456_y.o
133456_f.o
133456_e.o
etc
etc
etc
etc
Io vorrei riuscire a selezionare tutti quelli uguali....
Ma non sò come, se devo scrivere per ogni serie di quattro file il nome stò rovinato sono circa 1500 :'(
Help me please
"Not everything that counts can be counted, and not everything that can be counted counts."
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash selezionare file simili
allora forse è meglio fare uno scriptino
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
Alex M0rF3uS
- Entusiasta Emergente

- Messaggi: 2362
- Iscrizione: venerdì 13 luglio 2007, 18:43
- Contatti:
Re: Bash selezionare file simili
ah....ho capito...non lo so se con il bash si può fare quello che dici tu, se si può fare non conosco il modo quindi mi rimetto nelle mani di un espertone di bash
- scacchia
- Imperturbabile Insigne

- Messaggi: 2863
- Iscrizione: martedì 15 maggio 2007, 22:39
- Località: Un po' qui e un po' la
Re: Bash selezionare file simili
io di bash non ci capisco molto ma forse qualcuno può tradurlo...
for i in tutti_i_file
nome_parziale = substring(nome_file,1,6)
if nome_parziale = nome_parziale_prev or primo_file_della_lista
selezionalo
else
if not primo_file_della_lista
processa i 4 file
end-if
end-if
nome_parziale_prev = nome_parziale
end-for
for i in tutti_i_file
nome_parziale = substring(nome_file,1,6)
if nome_parziale = nome_parziale_prev or primo_file_della_lista
selezionalo
else
if not primo_file_della_lista
processa i 4 file
end-if
end-if
nome_parziale_prev = nome_parziale
end-for
Ultima modifica di scacchia il mercoledì 12 marzo 2008, 17:57, modificato 1 volta in totale.
"Non importa quanto corri, ma dove corri e perchè" Z. Zeman
"In an open world, who needs Windows or Gates?"
"Io lo spero vivamente, ma ho i miei dubbi che possa vincere uno scudetto con la Roma, che è il sogno più grande della mia vita." D.D.R.
"In an open world, who needs Windows or Gates?"
"Io lo spero vivamente, ma ho i miei dubbi che possa vincere uno scudetto con la Roma, che è il sogno più grande della mia vita." D.D.R.
Re: Bash selezionare file simili
Si il tutto fa parte di uno script più grande, ma non saprei come fare questa parte,
non sono molto esperto nell'I/O....
Qualcuno saprebbe darmi una mano con questa porzione di scriptino???
Grazie in anticipo a tutti
(b2b)
non sono molto esperto nell'I/O....
Qualcuno saprebbe darmi una mano con questa porzione di scriptino???
Grazie in anticipo a tutti
(b2b)
"Not everything that counts can be counted, and not everything that can be counted counts."
- Guiodic
- Accecante Asceta

- Messaggi: 28474
- Iscrizione: martedì 24 aprile 2007, 15:28
- Località: Roma
- Contatti:
Re: Bash selezionare file simili
@agli altri: ma vi state a incasinare... basta un
ls abcdef*
@sverdrup: messa così è più complicata, stiamo parlando di tutte le disposizioni di 6 caratteri per 6 posti (permutazione semplice) ed è pari nel tuo caso a 6!=720
L'algoritmo non è complicatissimo. Però magari la stessa cosa può essere fatta in modo più semplice, se magari decrivi cosa devi fare e come sono i nomi dei file nella directory (a parte quelli che devi selezionare) forse si può risolvere più semplicemente.
ls abcdef*
@sverdrup: messa così è più complicata, stiamo parlando di tutte le disposizioni di 6 caratteri per 6 posti (permutazione semplice) ed è pari nel tuo caso a 6!=720
L'algoritmo non è complicatissimo. Però magari la stessa cosa può essere fatta in modo più semplice, se magari decrivi cosa devi fare e come sono i nomi dei file nella directory (a parte quelli che devi selezionare) forse si può risolvere più semplicemente.
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash selezionare file simili
in bash non saprei, ma se può esserti utile, con python farei una cosa così (la prima parte per scremare i file con i nomi caratteri uguali):
import os
nomedir=raw_input("nome della cartella in cui sono i files:")
a=os.listdir(nomedir)
DIV=[]
for x in a:
if x[:7] not in DIV:DIV.append(x[:7])
print DIV # DIV è la lista che contiene tutte le combinazioni diverse
#dei primi sei caratteri dei file che sono nella cartella
#Dopo puoi usare questa per fare le operazioni sui gruppi
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Bash selezionare file simili
Codice: Seleziona tutto
#! /bin/bash
function elabora() {
echo "gruppo finito! E' composto da <$*>"
}
gruppo=""
lgroup=""
for F in *
do
grp=$(echo $F|cut -c -4)
gruppo=${gruppo:-$grp}
if [[ "${grp}" != "${gruppo}" ]]
then
elabora ${lgroup}
lgroup=""
fi
lgroup="${lgroup} ${F}"
gruppo=$grp
done
Re: Bash selezionare file simili
Grazie a tutti, domani provo e vi faccio sapere.
Comunque non si tratta di permutazioni, o meglio delle permutazioni di sei cifre....
per doirla in soldoni devo raggruppare tutti i file che hanno lo stesso nome,
dove il nome è caratterizzato da una stringa di 6 caratteri che è data dalla data di creazione.
Dopodichè devo elaborare tutti i file che hanno il nome uguale in maniera indipendente, ma questa è un'altra storia, e comunque il codice già l'ho scritto, solo che non riesco con la fase iniziale dello script che mi deve organizzare il tutto, senza la quale non posso andare avanti.....
GRAZIE MILLE a tutti dell'aiuto,
spero di non rompervi troppo con questa cosa..... :-[
Ciauzzzzzzz

Comunque non si tratta di permutazioni, o meglio delle permutazioni di sei cifre....
per doirla in soldoni devo raggruppare tutti i file che hanno lo stesso nome,
dove il nome è caratterizzato da una stringa di 6 caratteri che è data dalla data di creazione.
Dopodichè devo elaborare tutti i file che hanno il nome uguale in maniera indipendente, ma questa è un'altra storia, e comunque il codice già l'ho scritto, solo che non riesco con la fase iniziale dello script che mi deve organizzare il tutto, senza la quale non posso andare avanti.....
GRAZIE MILLE a tutti dell'aiuto,
spero di non rompervi troppo con questa cosa..... :-[
Ciauzzzzzzz
"Not everything that counts can be counted, and not everything that can be counted counts."
Re: Bash selezionare file simili
Ok grazie mille a tutti,
ho modificato lo script di paper0k e funziona alla grande,
soltanto che adesso devo riuscire ad eliminare gli spazi che ottengo incolonnando i vari dati in un unico file...
gli spazi si trovano all'inizio del file:
EX:
3264 34612 3461236 34621
7648 56365 3467778 32489
praticamente devo eliminare quelli che si trovano davanti alla prima colonna!
Spero di non dovervi disturbare più :-[
Grazie a tutti
Ciauzzzzz
ho modificato lo script di paper0k e funziona alla grande,
soltanto che adesso devo riuscire ad eliminare gli spazi che ottengo incolonnando i vari dati in un unico file...
gli spazi si trovano all'inizio del file:
EX:
3264 34612 3461236 34621
7648 56365 3467778 32489
praticamente devo eliminare quelli che si trovano davanti alla prima colonna!
Spero di non dovervi disturbare più :-[
Grazie a tutti
Ciauzzzzz
"Not everything that counts can be counted, and not everything that can be counted counts."
Re: Bash selezionare file simili
Grazie a tutti ho risolto creando un file di appoggio in questo modo:
e unendo tutti i file in colonne!!

Grazie MILLE (b2b)
Ciauzzzzz
Codice: Seleziona tutto
awk ‘{print $2}’ nome_fileGrazie MILLE (b2b)
Ciauzzzzz
"Not everything that counts can be counted, and not everything that can be counted counts."
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti
