Bash: divide a lista de arquivos em arquivos diferentes?

1

Eu tenho vários arquivos em um diretório como:

data1.dat
data2.dat
....
data24678.dat    

Para executar outro código, eu preciso ter um arquivo de texto com os nomes dos arquivos, mas eu preciso dividir em 50 arquivos por arquivo de texto, como: Arquivo1.txt:

/PATH/OF/FILE/data1.data
/PATH/OF/FILE/data2.data
/PATH/OF/FILE/data3.data
......
/PATH/OF/FILE/data50.data

Arquivo2.txt:

/PATH/OF/FILE/data51.data
/PATH/OF/FILE/data52.data
/PATH/OF/FILE/data53.data
......
/PATH/OF/FILE/data100.data

alguma ideia ?? Eu estava tentando como:

ls -1 | xargs -n 50 >> File1.txt

mas não sei quem deve selecionar cada "item" no comando xargs. Obrigado !!

    
por Alejandro 05.04.2014 / 00:26

2 respostas

3
ls -1 | split --lines=10

coloca os arquivos no mesmo diretório. Isso pode ser evitado por

ls -1 | (cd /where/ever; split --lines=10)

ou para um nome de arquivo diferente:

ls -1 | split --lines=10 /dev/stdin /path/to/splitfile.
    
por 05.04.2014 / 00:32
1

Tente isto (usa o GNU split , que é o padrão na maioria das distribuições Linux):

ls |
  sed "s:^:$(pwd)/:" |
  split -dl 50 --additional-suffix=.txt - /path/to/dest/File
    
por 05.04.2014 / 00:48