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 usandostate 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élessthan X -
mv "$i" Y/- move o arquivo atualmente processado dentro da pasta Y