Voglio ottenere la dimensione del file in variabile? Come farlo?dimensione file shell Linux
ls -l | grep testing.txt | cut -f6 -d' '
ha fornito la dimensione ma come memorizzarla nella variabile di shell?
Voglio ottenere la dimensione del file in variabile? Come farlo?dimensione file shell Linux
ls -l | grep testing.txt | cut -f6 -d' '
ha fornito la dimensione ma come memorizzarla nella variabile di shell?
size=`ls -l | grep testing.txt | cut -f6 -d' '`
Non è garantito che la dimensione sarà nel campo 6 quando è delimitata da spazi. –
Questo è anche inefficiente perché piping 'ls' in' grep' elenca * tutti * i file nella directory e ordina i loro nomi (che possono impiegare una notevole quantità di tempo in una directory con migliaia di file), e inoltre incline agli errori perché 'grep testing.txt' restituisce anche i file con nomi come' not_testingatxt_file' (come '.' in un'espressione regolare significa match-any-character). –
si può fare in questo modo con ls
(controllare la pagina man per senso di -s)
$ var=$(ls -s1 testing.txt|awk '{print $1}')
Oppure si può utilizzare stat
con -c '%s'
Oppure si può usare find (GNU)
$ var=$(find testing.txt -printf "%s")
la soluzione di ricerca funziona su MINGW e git bash su Windows. Nessuna delle altre risposte funziona su MINGW. – JDiMatteo
Se volevi una versione che funzionasse su * ogni * sistema POSIX, 'wc -c' sarebbe meglio che fare affidamento su' ls' behavior * o * per avere GNU 'find' o' stat' disponibili. –
Nota che wc -c è più accurato per file pseudo come/proc/cpuinfo – pixelbeat
size() {
file="$1"
if [ -b "$file" ]; then
/sbin/blockdev --getsize64 "$file"
else
wc -c < "$file" # Handles pseudo files like /proc/cpuinfo
# stat --format %s "$file"
# find "$file" -printf '%s\n'
# du -b "$file" | cut -f1
fi
}
fs=$(size testing.txt)
a=\`stat -c '%s' testing.txt\`;
echo $a
Bash, presumo? – ziya
sì è shell bash e grazie a tutti. –
Possibile duplicato di [Come verificare la dimensione di un file?] (Http://stackoverflow.com/questions/5920333/how-to-check-size-of-a-file) –