- 締切済み
perl テキストの連結
細かくテキストに分けて保存しておいた文章ですが、一つのテキストに連結したいのです。 数が500ほどあるので手動では無理です… 例です 1.txt 2.txt 3.txt を 1、txt (まとめて) 中身の順番は 1.txt 2.txt 3.txt のような感じにしたいです。 おねがいします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- iichiho
- ベストアンサー率37% (416/1114)
$ cat /Users/{あなたのユーザ名}/Desktop/a/* > /Users/{あなたのユーザ名}/Desktop/ALL.txt コレでいいんじゃないですか? ただし、どのような順番で連結されるかは指定できず、 $ ls で表示されるファイルの順番に連結されます。 ようは、1,2,3,4,5,6,7,8,9,10,11,12,13,14は、 1,10,11,12,13,14,2,3,4,5,6,7,8,9, という順番で連結されます。 これを回避するためには、番号部分を 01,02,03,04,05,06,07,08,09,10,11,12,13,14 という風にするか、前回の私の回答に書いたとおりの方法になります。 あと、この場合のファイル名の指定の注意点として、ALL.txtはaフォルダの中に作ってはいけません。 (*がディスクが一杯になるまでにALL.txtを読み続けてしまいます)
- tux_the_penguin
- ベストアンサー率42% (69/163)
補足を読みましたが言葉どおりでは意味がわかりません。 プログラムやコマンドを使おうとするなら些細な書き間違いをなくすように努めてください。相手はおバカなコンピュータです、私たち人間が何を言わんとしているのか汲み取って言われたことと違う動作をすることはありません。 お小言はこのくらいにして… デスクトップにある『a』という☆フォルダ☆に含まれるファイル全部を、ファイル名の順番につなげて1つのファイルを生成するということであれば2通りのコマンドの書き方があります。 【1】入力・出力ともに対象のファイルをフルパスで指定する 【2】対象のファイルのあるところへ移動してから操作する 【1】の場合は $ cat /○○/××/□□/△△/*.txt > /○○/××/□□/▽▽/ALL.txt (たぶん、○○はUsers ××はあなたのコンピュータ上の名前(ユーザー名) □□はDesktop △△は補足文によるとa ▽▽は△△と同じでもいいけど違うところでも可:階層の深さやそれぞれのダイレクトリの名前は正確ではありません) 【2】の場合、まずターミナルの窓が開いたときは(デフォルトでは)あなたのホームダイレクトリが作業対象なので、目的の位置にcdコマンドで移動します。 $ cd /○○/××/□□/△△/ とか $ cd ~/□□/△△/ など。 移動できたら$の左側が△△に変わります。そして $ cat * > ALL.txt (そこにあるファイル全部でなく.txtで終わる名前のファイルだけなら * の代わりに *.txt) ※途中のダイレクトリの名前が日本語だとちょっと面倒かもしれません。 ※ダイレクトリ=ディレクトリ=フォルダです。 「フルパス」「cdコマンド」「~/」「*」「>」「>>」などはターミナルでの操作の基本ですので調べてみてください
- tux_the_penguin
- ベストアンサー率42% (69/163)
cat はそのためにあるプログラムです。(表示するためのものではありません)なので、 $ cat 1.txt 2.txt 3.txt > ALL.txt でできます。 くっつける順番が確実にファイル名の数字や文字の順番どうりなら $ cat *.txt > ALL.txt でもできます。
補足
すいません、$ cat *.txt > ALL.txt を教えてもらったのですが デスクトップのファイル aの中のすべてのファイルを繋げるにはどうしたら良いでしょうか。
- iichiho
- ベストアンサー率37% (416/1114)
別にperlを使わなくてもいいような気がします。 ターミナルのコマンドライン上で、下記のように実行すればいいだけです。 cat 1.txt > ALL.txt cat 2.txt >> ALL.txt cat 3.txt >> ALL.txt cat 4.txt >> ALL.txt ・ ・ ・ 最初だけ">"ですが、これはALL.txtの中身をクリアして1.txtの中身を格納するもので、続く">>"はファイルの中身をクリアせずに追加でALL.txtに書き込んでくれます。 ファイル名の一覧があるのでしたら、バッチファイルをを作って実行するのもアリです。
- harawo
- ベストアンサー率58% (3742/6450)
テキストファイルの結合くらいなら、Perlに登場いただかなくても、Mac OS X付属のAutomatorで処理可能です。 Automator 2.0.2(Mac OS X 10.5)をもとにして説明します。 (1) 「ファイルとフォルダ」>「Finder項目の選択を求める」をワークフローにドラッグ&ドロップ。 「タイプ:」をフォルダにする。 (2) 「ファイルとフォルダ」>「フォルダの内容を取得」をワークフローにドラッグ&ドロップ。 (3) 「テキスト」>「テキストファイルを結合」をワークフローにドラッグ&ドロップ。 (4) 「テキスト」>「新規テキストファイル」をワークフローにドラッグ&ドロップ。
補足
OSが4なのでその方法が使えそうにありません。 説明不足で申し訳ありませんでした。
補足
返信遅れてすいませんでした。 何回かやったのですが空のall.txtだけがでてきます。 ターミナルに-bash: $: command not found という文が出てくるだけでしたorz