listagem problemática da pasta com muitos arquivos

0

No Ubuntu eu tenho uma pasta que contém muitos arquivos (~ 10M) .txt (cerca de 1-2KB cada). A pasta não é grande por si só (cerca de 400 MB) e não contém subpastas, apenas os arquivos .txt. Eu preciso listá-lo e não conseguir fazê-lo. (Eu posso contar o número de arquivos, no entanto, com wc -l ) a pergunta é: existe uma maneira de dividir a pasta de alguma forma ou de outra maneira, sem chamar métodos que ls usa?

    
por user349171 23.07.2014 / 12:14

1 resposta

0

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.

    
por 23.07.2014 / 14:03

Tags