ディレクトリ内のすべての(テキスト)ファイルを1つにマージする方法は?

ディレクトリ内のすべての(テキスト)ファイルを1つにマージする方法は?

14個のファイルがあり、すべて1つのテキストで構成されています。私はそれらを一つにまとめたいと思います。どうすればいいですか?

ベストアンサー1

技術的にはcat("connect")実行する必要がありますが、ほとんどの人はファイルを標準出力に出力するためにのみ使用します。複数のファイル名を指定すると順番に出力され、新しいファイルにリダイレクトできます。すべてのファイルであれば使用できます./*(または/path/to/directory/*そのディレクトリにない場合)。シェルはそれをすべてのファイルに拡張します。ファイル名(デフォルトでは隠しファイルを除く)。

$ cat ./* > merged-file

globを拡張するために、cshまたはシェルを使用していないことを確認してください。tcsh後ろにmerged-file以前に存在しなかった出力の機能をオンにしますmerged-file。そうしないと、ファイルシステムをいっぱいにする無限ループが発生する可能性があります。

ファイルのリストは語彙順にソートされます。を使用している場合は、zshglob修飾子を使用して順序を変更できます(番号、年齢、サイズなど)。

サブディレクトリにファイルを含めるには、次を使用します。

find . ! -path ./merged-file -type f -exec cat {} + > merged-file

ただし、ファイルのリストは並べ替えられず、隠しファイルが含まれていることに注意してください。-type fこれは以下に限定されます。定期的な他の種類のファイルを含める可能性が低いからです。 GNUを使用すると、通常のファイルへのシンボリックリンクも含めるようにfind変更できます。-xtype f

zshシェルを使用して、

cat ./**/*(-.) > merged-file

同じことを行います((-.)実装と同じです-xtype f)、ソートされたリストを提供し、隠しファイルを除外します(D再インポートするには修飾子を追加します)。zargsこの問題を解決するために使用できますパラメータリストが長すぎます。間違い。

おすすめ記事