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

Re: Newbie in programmazione bash



Il 2013-03-02 08:13 bodrato@mail.dm.unipi.it ha scritto:
Ciao,

Il Ven, 1 Marzo 2013 9:25 pm, breathe@rotellaweb.it ha scritto:
Questo è il codice scritto in maniera corretta e che non fa cosa
vorrei, cioè copia sempre i file con -ctime 1 in tutte le cartelle:

#!/bin/bash

y=1

while [ $y -le 15 ];
do
       find ./ -type f -ctime $y > lista
         for i in `cat lista`;
  do
          cp $i $y/
done
       y=$(( $y + 1 ))
done

Che dirti? Ho copiato il codice qui sopra e direi che fa proprio quello
che vorresti.
Tieni conto che il tuo "for i in `cat lista`" funziona solo se i nomi di file inseriti nella lista non contengono spazii, a-capo, tabulazioni...

Come ti è già stato suggerito, il tutto si potrebbe compattare, magari
usando l'azione -exec di find e un for invece di un while per y:

for y in $(seq 15);do find . -type f -ctime $y -exec cp \{\} $y/ \;;done

Questa versione si comporta come previsto anche nel caso di nomi-file
"strani"... e non ha bisogno di bash.

--
http://bodrato.it/software/

Risolto l'arcano,
devo chiedervi scusa per il tempo che vi ho fatto perdere.
Avevo la sensazione che questo codice non facesse esattamente ciò che vorrei, soprattutto perchè il nome dei file è praticamente identico, e mi sembrava copiasse gli stessi nelle varie directory. Concordo con voi che questo pezzo di codice non sia il massimo e che la stessa cosa si possa fare meglio o più velocemente in altro modo, ma la mia necessità era capire dove e se sbagliavo.
Vi auguro una buona domenica.
M.



Reply to: