これはすでに答えられているかもしれません。しかし、私はそれを見つけることができませんでした。
私が持っています:
directory
directory/subdirectory/subdirectoryofsubdirectory
directory/sub-subdirectory/subdirectoryofsub-subdirectory/subdirectoryofsubdirectoryofsub-subdirectory
directory/sub-sub-subdirectory
directory/sub-sub-sub-subdirectory
各ディレクトリとサブディレクトリにはファイルが含まれています。それらすべてをリストし、リストをcatにパイプし、リストをテキストファイルにcatします。これは「ワンライナー」で行うことができますか?もしそうなら、それを提供してください。または、スクリプトが必要ですか?必要な場合、スクリプトを作成するためにどのコマンド/構造が必要ですか?
最善の策はfind
コマンドだと思います。リスト内のディレクトリではなくファイルだけが必要な場合は、次のようにします。
find directory/ -type f -print > textfile
Findコマンドは、ファイルを再帰的にリストします。 (ディレクトリもリストしたい場合は、-type f
を削除してください)。 > textfile
は、catを必要とせずにstdoutをtextfileという名前のファイルにリダイレクトします。
find
は、多くのオプションを備えた強力なツールです。出力を少し微調整する必要がある場合は、man find
を参照してください。
[〜#〜] update [〜#〜](thanks gvkv ):
ファイルのcontentsを単一のテキストファイルに入れたい場合、それを行う1つの方法は次のとおりです。
find Documents/ -type f -exec cat {} + > textfile
Steven Dの答え が説明するように、find
は一般的な方法です。シェルがそれをサポートしている場合、**
を使用して任意の数のサブディレクトリに一致させることができます(bashでは*
と同じで、デフォルトでは1つしか一致しませんが、Dennisのコメントを参照してください)。行う:
cat **/*