我在目录中有大量的小文本文件。我想将每100个文件合并成一个大文件。任何人都可以帮助我使用Linux Shell脚本来执行此操作吗?
答案 0 :(得分: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',...
的文件答案 1 :(得分:0)
将输出附加到new.txt
cat *.txt >> new.txt
覆盖new.txt
cat *.txt > new.txt
答案 2 :(得分: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
您可以将其置于循环中,直到不再有文本文件为止。