Você deve poder usar find
para listar os arquivos:
find .
Usar *
ou similar como um argumento de comando está associado a um erro "Argument list too long", mas pode funcionar em um loop de shell como sugerido acima por Andrew Stubbs.
Se isso não ocorrer, você poderá alimentar a saída find
de cima para um loop while
para poder processar arquivos únicos:
find . | while read filename; do
dosomething $name
done
com valores apropriados de "dosomething".
Para "dividir" a pasta, você pode mover os arquivos para, por exemplo, subdiretórios com base em seu nome, por exemplo assim:
mkdir _a _b _c _d _e _f _g _h _i _j _k _l _m _n _o _p _q _r _s _t _u _v _w _x _y
find . | while read filename; do
case $filename in
a*) mv $filename _a;;
b*) mv $filename _b;;
[...]
z*) mv $filename _z;;
esac
done
Esquemas mais sofisticados são possíveis, é claro.