PDA

View Full Version : [HELP] Piccole problema con Script in Bash!


The X
25-01-2005, 00:55
#!/bin/bash

directory=/var/log/apache
store=/var/log/apache/tmp
count=1

for i in $( ls "$directory" ); do
src="$directory/$i"
var=`ls -al $src`
dest=`cat $var | cut -d" " -f6`
if [[ $dest == "lug" ]]; then {
mv $src $store
}
fi
count=$(($count+1))
done


Questo script dovrebbe spostare tutti i files datati "LUGLIO" nella cartella tmp MA ho un problma col cut...

quando gli passo il parametro -d" " mi aspetto ke lui mi consideri gli spazi vuoti come delimitatori per i campi cosichè il campo 6 sia il mese... eppure non è così in quanto mi calcola ogni spazio che c'è tra i VERI campi come campi stessi.....

Es.
-rw-r----- 1 root adm 32421 lug 19 06:27 error.log.98.gz

Tra root e adm c sono 5 spazi così se root è il campo 3 adm diventa il campo 3+5=8 e NON il campo 4...

qlc mi può aiutare ?

TNK

DeadLock
25-01-2005, 06:58
sonno... :cry:

non puoi usare awk?
se si, per ottenere la sesta colonna fai


ls -al|awk '{print $6}'



bai
DL :oink:

guldo76
25-01-2005, 09:54
Originariamente inviato da The X
var=`ls -al $src`
dest=`cat $var | cut -d" " -f6`

Questo script dovrebbe spostare tutti i files datati "LUGLIO" nella cartella tmp MA ho un problma col cut...
cut non considera ripetizioni del delimitatore come una singola ricorrenza del delimitatore; cambia la seconda riga con
dest=`echo $var | tr -s" " | cut -d" " -f6`
o meglio ancora
dest=`ls -al $src | tr -s" " | cut -d" " -f6`
senza usare la variabile var.
(perché usi cat? var non è un file)

The X
26-01-2005, 00:53
Originariamente inviato da guldo76
cut non considera ripetizioni del delimitatore come una singola ricorrenza del delimitatore; cambia la seconda riga con
dest=`echo $var | tr -s" " | cut -d" " -f6`
o meglio ancora
dest=`ls -al $src | tr -s" " | cut -d" " -f6`
senza usare la variabile var.
(perché usi cat? var non è un file)

Grazie guldo... ho risolto utilizzando : dest=`ls -al $src | tr -s " " | cut -d" " -f6`

Grazie anke a Deadlock x la risposta ^_^