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

Re: script tar con nomi directory contenenti spazi



Il 26/09/2016 09:09, Piviul ha scritto:
beppe ha scritto il 26/09/2016 alle 00:37:
Lo script funziona bene finche' non incontra una directory con spazi:

$ cat tar_backup.sh
#!/bin/bash
data=$data$(date | cut -d ' ' -f6 | cut -c 1-4)
data=$data$(date | cut -d ' ' -f2)
data=$data$(date | cut -d ' ' -f3)
echo $data
#IFS_OLD=$IFS
#IFS=$'\n'

# per controllare la data
sleep 2
for i in $(ls -d /home/prove/*/ | cut -f4 -d'/' | sed 's/\ /\\ /g'); do
tar -cvzf $data'_'${i%%/} '/home/prove/'${i%%/}; done
io credo che il problema risieda nelle linee che hai commentato. Di default IFS (Internal File Separator) è lo spazio quindi questo ciclo non funziona bene. Devi appunto decommentare le righe che riguardano l'IFS.

Poi sinceramente mi sembra anche macchinoso (oltre che non capisco cosa faccia il comando ${i%%/} ma questo è un limte mio) il ciclo for che hai costruito...

io il ciclo lo riscriverei così:

for d in $(ls -d /home/prove/*); do
   dir=$(basename $d)
   tar cvzf "$data_$dir" "$d"
done

in ogni caso se vuoi mantenere la tua versione ocho che tar considera lo spazio come separatore dei suoi argomenti. Devi quindi quotare i riferimenti alle dir dentro /home/prove
Ciao
Piviul
i cicli funzionavano tutti correttamente meno che con i nomi directory contenenti spazi.
Avevo provato sia con IFS=$'\n',  sia senza.

Con il tuo ciclo for adesso mi sembrano corretti anche con piu' spazi nei nomi,
rimettendo IFS=$'\n'.

Grazie 1000!!!

ciao
Beppe

--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.


Reply to: