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

时间:2015-10-22 20:49:31

标签: shell split sh

我将一个更大的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."

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

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

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

请帮帮我。非常感谢你!

2 个答案:

答案 0 :(得分:2)

#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."

答案 1 :(得分:0)

您可以通过

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

不需要循环