[Lugge] Re: Bash Scripting problema...

  • From: "Roberto A. Foglietta" <roberto.foglietta@xxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Wed, 08 Jun 2005 10:05:29 +0200

asettico wrote:

Roberto A. Foglietta wrote:

tutti i nomi di file che appaiono sono jpeg

file -Ni * | grep -w image/jpeg | cut -d: -f1

se invece vuoi scandagliare anche le sottodirectory

find . -type f 2>&1 | xargs file | grep -w image/jpeg | cut -d: -f1

oltretutto la non chiamata a sed fa risparmiare tempo CPU, memoria e content switch (indifferente su WS, più interessante su embedded) ed ovviamente questo approccio permette di essere usato come input per un altro script del tipo

Sui due punti nel nome hai ragione purtroppo ogni vola che si usa cut vi è sempre quel problema: il carattere separatore non deve comparire all'interno dei dati. Ogni volta ==> implicito nell'uso di cut!
Perciò si deve sempre ponderare se l'uso di cut è più vantaggioso del suo non uso. In questo caso mi pareva lo fosse perchè la lista era destinata ad uso umano e il tuo sed è più soggetto a errori di battitura.



Per quanto riguarda il resto:

 a) non rispetti le specifiche
 b) ti riconduci al caso di dega

è così fatto: non mi riconduco al caso precedente proprio perchè non rispetto le specifiche.

Lui fa un for per avere quella scritta su tutte le righe, ma come puoi ben capire la ridondanza di quell'informazione è inutile mentre è più conveniente avere due liste: una per i "buoni" e una per i "cattivi".
Ognuna di quelle liste HA SENSO darla in pasto ad un ciclo for in maniera da poter fare sucessive elaborazioni (e in quel caso si deve rivalutare l'uso di sed). Oppure una delle sue si scarta.


Lui usa il ciclo for per ottenere ridondanza, io elimino ridondanza, separo l'infomazione (abbasso l'entropia e se anche scarto riduco il numero di casi su cui lavorare quindi le prestazioni globali) e uso il ciclo for per eventuali altre elaborazioni.
;-)





Ugualmente corretto, ma a 2 condizioni: non rispetti le richieste (scrivere il messaggio per ogni file) e potrebbero esserci file con un ':' nel nome, nel qual caso cut va in palla.

for i in $(vedi sopra); do
    fai qualcosa con $i
done


In questo modo ti riconduci all'esempio proposto da DeGa. ;-)
Saluti.

Ciao, -- Roberto A. Foglietta Analista Programmatore GNU/Linux SAD Trasporto Locale S.p.a. Corso Italia 13/N 39100 BOLZANO (I)

Tel. +39/0471-450.261
Fax +39/0471-450.253
========----------


Archivio delle e-mail postate in lista http://www.freelists.org/archives/lugge/

Prima di scrivere in m-list per favore leggi il regolamento http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione
Modifica dell'account sulla lista LUGGe http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione#list



Other related posts: