2010-02-10 20 views
7

¿Quiero que el tamaño del archivo sea variable? ¿Como hacer eso?tamaño del archivo de shell de linux

ls -l | grep testing.txt | cut -f6 -d' ' 

dio el tamaño pero cómo almacenarlo en la variable de shell?

+0

Bash I presume? – ziya

+0

sí, es shell bash y gracias a todos. –

+1

Posible duplicado de [¿Cómo verificar el tamaño de un archivo?] (Http://stackoverflow.com/questions/5920333/how-to-check-size-of-a-file) –

Respuesta

18
filesize=$(stat -c '%s' testing.txt) 
+2

'stat -f '% z'' en MacOS X. – Matt3o12

1
size=`ls -l | grep testing.txt | cut -f6 -d' '` 
+0

No hay garantía de que el tamaño estará en el campo 6 cuando está delimitado por espacios. –

+0

Esto también es ineficaz porque conectar 'ls' en' grep' enumera * todos * los archivos en el directorio y ordena sus nombres (lo que puede llevar una cantidad sustancial de tiempo en un directorio con miles de archivos), y además propenso a errores porque 'grep testing.txt' también devuelve archivos con nombres como' not_testingatxt_file' (como '.' en un regex significa match-any-character). –

4

que puede hacerlo de esta manera con ls (consulte la página hombre de sentido de la -s)

$ var=$(ls -s1 testing.txt|awk '{print $1}') 

O puede utilizar stat con -c '%s'

O puede utilizar find (GNU)

$ var=$(find testing.txt -printf "%s") 
+0

la solución de búsqueda funciona en MINGW y git bash en Windows. Ninguna de las otras respuestas funciona en MINGW. – JDiMatteo

+0

Si quería una versión que funcionara en * cada * sistema POSIX, 'wc -c' sería mejor que confiar en el comportamiento' ls' * o * al tener GNU 'find' o' stat' disponible. –

+0

Tenga en cuenta que wc -c es más preciso para pseudoarchivos como/proc/cpuinfo – pixelbeat

3
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) 
-1
a=\`stat -c '%s' testing.txt\`; 
    echo $a 
Cuestiones relacionadas