将文件从目录中的先前拆分拆分为更小的文件

Split files into even smaller files from a previous split in a directory

我将一个更大的 4200 万行文件拆分为 100000 行并放入 /dev/shm/split/。

我需要将它们分成 1000 行的更小文件。

1 这是我认为可行的方法,但只处理 1 个文件,而不是所有文件:

#!/bin/sh

for f in /dev/shm/split/file.txt.* ;

do

   find /dev/shm/split/ -type f -name $f -exec split -l 1000 {} /dev/shm/split/file1.txt. \;

done ;

echo "Split complete."

2 我也试过:

#!/bin/sh

for f in /dev/shm/split/* ;

do

   split -l 1000 {} /dev/shm/split/file1.txt. ;

done ;

echo "Split complete."

3 我也试过了:

#!/bin/sh

while read file in * ; 

do

   split -l 1000 $file file1.txt.

done ;

echo "Split complete."

编号 1 生成了 1 个通过拆分命令处理的文件。 2号没有产生任何东西。数字 3 似乎是通过将光标移到下一行来开始处理的,但是当我检查时使用:

 wc -l /dev/shm/split/file1.* 

...大约3分钟后没有结果。

请帮帮我。非常感谢!

#3 with a few changes might work


ls *.txt | while read file
do
   echo "Splitting file $file"
   split -l 1000 $file $file.
done

echo "Split complete."

您可以通过

实现
find /dev/shm/split/ -type f -exec split -l 1000 {} {} \;

不需要循环