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: