回答:
使用するファイルを連結するには
cat file1 file2 file3 ...時間でソートされた引用符で囲まれたファイル名のリストを取得するには、最新のものを最初に使用します。
ls -tすべてを一緒に入れて、
cat $(ls -t) > outputfilels(例えば*.html)にいくつかの引数を与えたいかもしれません。
ただし、スペースを含むファイル名がある場合、これは機能しません。My file.htmlは2つのファイル名と見なされます:Myとfile.html。lsファイル名を引用符で囲んでから、引用符xargsを理解しているを使用して、引数をに渡すことができますcat。
ls -tQ | xargs cat2番目の質問については、ファイルの一部を除外することは難しくありませんが、何を削除するかによって異なります。「冗長ヘッダー」とは何ですか?
cat $(ls -t)また、ファイル名の展開に対して脆弱です。ファイル名に*、または?、またはブラケット式(例file-[old].html)がある場合; パターンとして解釈されるファイル名が他のファイル名と一致する場合。このアプローチでは、誤ったリストが作成されます。set -fこの欠陥に対処します。
                    ls -Qに適さない出力を生成する場合がありxargsます。たとえば、に"foo"なりますが"\"foo\""、xargsは二重引用符で囲まれた文字列内のエスケープされた二重引用符を理解しません。
                    辞書編集以外の順序でファイルをリストする最も簡単な方法は、zsh glob修飾子を使用することです。zshがなくてもを使用できますlsが、の出力の解析にlsは危険が伴います。
cat *(om)一部の行を削除する場合は、sed、awk、またはperlを使用します。たとえば<head>、最初のファイルから取得<body>し、他のファイルの部分を結合するには、すべてのファイルの行にタグ<body>と</body>タグだけがあると仮定します。
{
  sed -e '/<\/body>/ q' *.html(om[2])
  sed -e '1,/<body>/ d' -e '/<\/body>/,$ d' *.html(om[3,-1])
  echo '</body>'
  echo '</html>'
} >concatenated.html説明:
concatenated.html作成されます。したがって、これは最も若い*.htmlファイルです(将来の日付を持つファイルがないと仮定します)。*.htmlファイルからコピーしますが、その</body>行で終了します。<body>行まですべてをスキップし、その行から始め</body>ます。
cat $(ls -t) > outputfile。そうでない場合cat、引用されたファイル名を拒否します