it-swarm-ja.com

複数のサブディレクトリからのファイルの連結

次のようなディレクトリ構造があるとします。

file1.txt
folder1/
    file2.txt
folder2/
    file3.txt

File1.txt、file2.txt、およびfile3.txtを1つのファイルに連結するにはどうすればよいですか?

編集:このディレクトリ構造は単なる例です。問題は、任意のディレクトリ構造と任意の数のファイルを指定して、サブフォルダからファイルを連結する方法についてです。

5
Joe Mornin

Mac OSXで次のものを動作させることができました。

find . -type f -exec cat {} > ../results.txt \;

しかし、なぜそれが機能するのか完全には理解していないので、誰かが説明してくれると助かります。

2
Joe Mornin
cat file1.txt folder1/file2.txt folder2/file3.txt > single.txt
8
cvaldemar

私たちはどのOSについて話しているのですか?

Windowsを想定して、次のコマンドを使用します(必要に応じてファイル/フォルダー名を置き換えます)。

C:\> ren > TARGET.TXT 2> nul
C:\> cd MyFolder
C:\MyFolder> for /R %i in (*) do copy /b \TARGET.TXT + "%i" \TARGET.TXT

最初の行は、組み込みコマンドを使用してファイルC:\TARGET.TXTを作成(または消去)します。 3番目のコマンドは、現在のディレクトリとそのサブディレクトリ内のすべてのファイルを再帰的に処理し、それらをターゲットファイルに追加します(隠しファイルは含まれないことに注意してください)。一部のファイルがプレーンテキストではない場合に備えて、/bスイッチを使用してバイナリ形式でコピーします。

4
Synetech

copy /y file1.txt+folder1\file2.txt+folder2\file.txt destination.txtトリックを行う必要があります

参考までに/yプロンプトを無効にします

3
Keltari

すべてのサブディレクトリにすべてのファイルが必要な場合、または検索可能な識別子がいくつかあると仮定すると、次のように機能します。この例では、Windowsシステムに移植されたunixfindおよびcatコマンドの移植を使用していたことに注意してください。この特定のWindowsポートが何歳かわからないので、マイレージは異なる場合があります。

find . -type f -exec cat {} ; | cat > bigfile.txt

Ubuntu10.10とbashShellを使用すると、検索パスで作成された場合に「found」bigfile.txtが見つかるため、およびコマンドの特定の部分をエスケープする必要があるため、次の構文の方がうまく機能することがわかりました。これとWindowsポートの違いは、角かっこを一重引用符で囲み、セミコロンの前に円記号を付け、1つ上のディレクトリにコンテナファイルを作成することです。

find . -type f -exec cat '{}' \; | cat > ../bigfile.txt
3
Dennis