Não sei se isso será de utilidade para alguém, mas precisei para poder separar arquivos de layout diferentes. No meu caso, cada layout bancário tem um tamanho fixo por linha (não todos, mas a maioria), por exemplo o CNAB 400, possui 400 caracteres por linha, o CNAB240, possui 240, arquivos de arrecadação bancária, 150 caracteres e assim por diante.
Para isso criei o seguinte script:
caminho="/home/thiago/tmp" filtro="*.txt" for file in `ls $caminho/$filtro 2>/dev/null` do echo $file classifica=`head -n1 $file | wc -m` mkdir $caminho/$classifica 2>/dev/null mv $file $caminho/$classifica done
Altere o caminho e o filtro para sua necessidade e o script irá criar uma pasta para cada tamanho de arquivo e irá jogar os arquivos em cada uma dessas pastas. A linha 6 recupera a primeira linha do arquivo ("head -n1") e o "wc -m" conta a quantidade de caracteres retornado pelo "head".