0

ディレクトリに膨大な数の小さなテキストファイルがあります。100個のファイルごとに1つの大きなファイルにまとめたかったのです。誰かがこれを行うためのLinuxシェルスクリプトを手伝ってくれませんか?

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 に答える