[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] Find dentro a for



On Mon, 1 Oct 2007 17:25:29 +0200
nextime@nexlab.it wrote:

> > Ovvero tronca il nome agli spazi, mentre se aggiungo le
> > "virgolette" al find e lo faccio diventare cos? 
> > ----------------------------------
> > for i in "`find . -iname "*abc"`"; do
> > ----------------------------------
> 
> 
> 
> export IFS=$'\n';
> 
> prima del for, cosi' cambi il separatore del for a solo \n, quindi non
> ti tagliera' piu' sugli spazi.

Ciao,

grazie per la risposta, mi hai indicato la giusta via. :)

Per i posteri (e per me che sicuramente perderò lo script), posto il
problema e la soluzione ad esso: ho una directory contenente
innumerevoli files ".rar" e ".zip" al cui interno c'è un file ".ext"
che mi interessa. I files possono essere "zippati" o "rarrati" (...)
ricorsivamente (per esempio primo.zip contiene primo.rar che a sua
volta contiene primo.ext che è il file che mi interessa).

Questo è lo script:
-----------------------
#!/bin/bash

oIFS=$IFS
nIFS="
"
IFS=$nIFS 

# Finchè sono presenti .zip o .rar nella directory e sottodirectory
# continuo a ciclare
while [ "$(find . -iname "*zip")" -o "$(find . -iname "*rar")" ]; do

	# Estraggo i .zip, CANCELLANDO L'ORIGINALE E SOVRASCRIVENDO
	# ALTRI EVENTUALI FILES
	for i in $( find . -iname "*zip" ); do
		unzip -n "$i" 
		rm -rf "$i"
	done

	# Estraggo i .rar, CANCELLANDO L'ORIGINALE E SOVRASCRIVENDO
	# ALTRI EVENTUALI FILES
	for i in $( find . -iname "*rar" ); do
		unrar x -o- "$i" 
		rm -rf "$i"
	done

done

# In mezzo al marasma di roba scompattata trovo i files che mi
# interessano e li sposto "normalizzandoli" nella directory
# precedentemente creata "files_che_mi_interessano"
for i in `find . -iname "*ext"`; do
	lower="$(echo "$i" | tr '[A-Z]' '[a-z]')"
	mv "$i" files_che_mi_interessano/"$lower"
done

IFS=$oIFS
-----------------------

Spero sia utile ;)

Grazie e ciao
InSa

-- 
++ Powered by Sid ++



Reply to: