これに対する答えはすでにあるかもしれません。しかし、私はそれを見つけることができませんでした。
私は持っています:
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
)。> textfile
catなしでstdoutをtextfileというファイルにリダイレクトします。
find
さまざまなオプションを備えた強力なツールです。man find
出力を少し調整する必要があることを確認してください。
修正する(ありがとうございます。wxya):
欲しいならコンテンツファイルを単一のテキストファイルにマージするには、次のいずれかの方法を使用します。
find Documents/ -type f -exec cat {} + > textfile
答え2
find
次の一般的な方法です。スティーブンDの答え説明する。シェルがそれをサポートしている場合は、複数のサブ**
ディレクトリを一致させるために使用できます(bashではデフォルトと*
同じで、1つのサブディレクトリのみが一致しますが、Dennisの説明を参照)。したがって、次のことができます。
cat **/*