0

我在一个目录中有大量的小文本文件。我想将每 100 个文件合并成一个大文件。任何人都可以帮助我使用 Linux Shell 脚本来执行此操作吗?

4

3 回答 3

2

下面的草图将做到这一点:

files=( * )                                 # list of files
idx=0                                       # start index of actual package
len=100                                     # files per package
pcount=0                                    # package counter

while [ $idx -le ${#files[@]} ] ; do
  cat "${files[@]:idx:len}" > pack${pcount}   # process subarray
  ((idx+=len))                              # start of next package
  ((pcount++))                              # number of next package 
done

结果是名为'pack0','pack1',...的文件

于 2012-06-10T09:06:47.290 回答
0

将输出附加到 new.txt

cat *.txt >> new.txt

覆盖 new.txt

cat *.txt > new.txt
于 2012-06-10T07:47:14.110 回答
0

如果文件可以(重新)移动,那么它相当简单:

find text_files_dir/ -name '*.txt' | \
head -n 100 | \
while read f; do cat "$f" >> big_file && rm "$f"; done

或者

find text_files_dir/ -name '*.txt' | \
head -n 100 | \
while read f; do cat "$f" >> big_file && mv "$f" some_place_else/; done

你可以把它放在一个循环中,直到没有更多的文本文件。

于 2012-06-10T10:00:18.293 回答