特定のディレクトリ内のすべてのファイルを日付順にリンクするにはどうすればよいですか?最新のファイルが一番上に来るようにしますか?

特定のディレクトリ内のすべてのファイルを日付順にリンクするにはどうすればよいですか?最新のファイルが一番上に来るようにしますか?

最も古いファイルは一番下にありますか?

そして、これにより、各HTMLファイルに含まれる重複したヘッダーも削除できますか?複数のHTMLファイルを結びつける様子を見ると、最終ファイルのファイルサイズを少し縮めることができればいいと思います。

答え1

使用するファイルをリンク

cat file1 file2 file3 ...

参照されたファイル名の時系列リストを最新の項目から取得するには、次のようにします。

ls -t

一緒に撮った、

cat $(ls -t) > outputfile

ls(たとえば)に*.htmlいくつかのパラメータを提供できます。

ただし、この方法はファイル名にスペースが含まれている場合は機能しません。My file.html2つのファイル名と見なされます。ファイル名を引用して、MyUnderstanding -quotedを使用して引数を渡すfile.htmlことができます。lsxargscat

ls -tQ | xargs cat

2番目の質問では、一部のファイルをフィルタリングすることは難しくありませんが、正確に削除したい項目によって異なります。 「冗長ヘッダ」とは何ですか?

答え2

アルファベット順ではなく順番にファイルをリストする最も簡単な方法は、zsh を使用することです。グローバル予選。 zshがなくても使えますlsが、解析された出力lsには危険があります。

cat *(om)

特定の行を削除するには、sed、awk、またはperlを使用してください。たとえば、<head>最初のファイルの一部を取得し、<body>他のファイルから結合するには、<body>タグ</body>が各ファイルの1行に個別にあるとします。

{
  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ファイルです(将来の日付のファイルがないと仮定)。
  • 次に、2番目に小さい*.htmlファイルからコピーしますが、行で終了します</body>
  • その後、別のファイルからコピーしますが、その行<body>のすべての項目をスキップして</body>その行から始めます。
  • 最後に最後に閉じるタグを生成します。

答え3

@angusが提供するソリューションは素晴らしいですが、フォルダ内にディレクトリがあると問題が発生するため、解決されます。

cat $(ls -tpa | grep -v / )

関連情報