Sugiro fazer um loop sobre todos os arquivos no diretório atual com este for
loop:
for i in *; do
size=$(stat --printf="%s" "$i")
if [ $size -lt 100000000 ]; then
mv "$i" A/
elif [ $size -lt 500000000 ]; then
mv "$i" B/
else
mv "$i" C/
fi
done
Você solicitou Megabyte , se realmente queria 100/500 Mebibyte use 104857600
e 524288000
de acordo.
Se o diretório contiver outros arquivos e você quiser apenas processar, .avi
arquivos, use:
for i in *.avi; do …
Explicações
-
for i in *; do … ; done
- executa o loop em todos os arquivos no diretório atual -
size=$(stat --printf="%s" "$i")
- obtenha o tamanho do arquivo em bytes usandostat
e salve-o como variávelsize
-
if A; then B; elif C; then D; else E; fi
- se A for verdadeiro, B, senão se C for verdadeiro, D, senão E -
[ $size -lt X ]
- teste sesize
él
esst
han X -
mv "$i" Y/
- move o arquivo atualmente processado dentro da pasta Y