Usando find
en un archivo específico en $filepath
:
if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
printf '%s is strictly larger than 1 MB\n' "$filepath"
fi
Esto usa find
para consultar el archivo específico en $filepath
por su tamaño. Si el tamaño es superior a 1000000 bytes, find
imprimirá la ruta del archivo, de lo contrario no generará nada. Los -n
test es verdadero si la cadena tiene una longitud distinta de cero, lo que en este caso significa que find
generó algo, lo que a su vez significa que el archivo tiene más de 1 MB.
No preguntaste sobre esto:Encontrar todos los archivos regulares que tienen más de 1 MB bajo algún $dirpath
e imprimiendo un mensaje corto para cada uno:
find "$dirpath" -type f -size +1000000c \
-exec printf '%s is larger than 1 MB\n' {} +
Estas piezas de código deberían ser portátiles para cualquier Unix.
Tenga en cuenta también que usar <
o >
en una prueba probará si las dos cadenas involucradas se ordenan de una manera particular lexicográficamente. Estos operadores no hacen comparaciones numéricas. Para eso, usa -lt
("menor que"), -le
("menor o igual que"), -gt
("mayor que"), o -ge
("mayor o igual que"), -eq
("igual a"), o -ne
("no igual a"). Estos operadores hacen comparaciones de enteros.