lsはディレクトリーツリー全体を探索してパイプできるファイルのリストを生成します。

lsはディレクトリーツリー全体を探索してパイプできるファイルのリストを生成します。

これに対する答えはすでにあるかもしれません。しかし、私はそれを見つけることができませんでした。

私は持っています:

directory
directory/subdirectory/subdirectoryofsubdirectory
directory/sub-subdirectory/subdirectoryofsub-subdirectory/subdirectoryofsubdirectoryofsub-subdirectory
directory/sub-sub-subdirectory
directory/sub-sub-sub-subdirectory

すべてのディレクトリとサブディレクトリにはファイルが含まれています。私はそれらをすべてリストし、リストをcatにパイプし、リストをテキストファイルにパイプしたいと思います。 「一行」でこれを行うことはできますか?その場合はご提供ください。それともスクリプトが必要ですか?では、スクリプトにどのようなコマンド/構造が必要ですか?

答え1

最良の選択はfindコマンドだと思います。ディレクトリではなくリスト内のファイルのみを希望する場合は、次のようになります。

find directory/ -type f -print > textfile

find コマンドはファイルを再帰的にリストします。 (ディレクトリも一覧表示するには削除してください-type f)。> textfilecatなしでstdoutをtextfileというファイルにリダイレクトします。

findさまざまなオプションを備えた強力なツールです。man find出力を少し調整する必要があることを確認してください。

修正する(ありがとうございます。wxya):

欲しいならコンテンツファイルを単一のテキストファイルにマージするには、次のいずれかの方法を使用します。

find Documents/ -type f -exec cat {} + > textfile

答え2

find次の一般的な方法です。スティーブンDの答え説明する。シェルがそれをサポートしている場合は、複数のサブ**ディレクトリを一致させるために使用できます(bashではデフォルトと*同じで、1つのサブディレクトリのみが一致しますが、Dennisの説明を参照)。したがって、次のことができます。

cat **/*

関連情報