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:
[sourcecode language=”bash” highlight=”6″]
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
[/sourcecode]
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”.