Bash:将文件列表拆分为不同的文件?

Bash:将文件列表拆分为不同的文件?

我的目录中有几个文件,例如:

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

要运行另一个代码,我需要一个包含文件名的文本文件,但我需要将每个文本文件分成 50 个文件,例如: File1.txt :

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

文件2.txt:

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

任何想法??我正在尝试:

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

但我不知道谁在 xargs 命令中选择每个“项目”。谢谢!!

答案1

ls -1 | split --lines=10

将文件放在同一目录中。这可以通过以下方式避免

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

或者使用不同的文件名:

ls -1 | split --lines=10 /dev/stdin /path/to/splitfile.

答案2

试试这个(使用split大多数 Linux 发行版默认的 GNU):

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

相关内容