そして一番下に最も古いファイルがありますか?
また、これを行うと、各HTMLファイルに含まれている冗長なヘッダーを取り除くこともできますか?自分で多くのHTMLファイルを連結しているように見えるので、最終的なファイルのファイルサイズを少し小さくするといいでしょう。
使用するファイルを連結するには
cat file1 file2 file3 ...
時間順にソートされた引用されたファイル名のリストを取得するには、最初に新しいものを使用します
ls -t
すべてを一緒に入れて、
cat $(ls -t) > outputfile
ls
にいくつかの引数を与えることができます(例:*.html
)。
ただし、ファイル名にスペースが含まれている場合、これは機能しません。 My file.html
は、2つのファイル名であると見なされます:My
およびfile.html
。 ls
でファイル名を引用し、引用を理解しているxargs
を使用して、引数をcat
に渡すことができます。
ls -tQ | xargs cat
2番目の質問については、ファイルの一部をフィルターで除外することは難しくありませんが、何を削除するかによって異なります。 「冗長ヘッダー」とは何ですか?
辞書式以外の順序でファイルをリストする最も簡単な方法は、zsh glob qualifiers を使用することです。 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>
行から始めます。@angusによって与えられた解決策は良いですが、フォルダ内にディレクトリがある場合は問題を解決します。
cat $(ls -tpa | grep -v / )