• ベストアンサー

cat `find ./` > for_print.txt にファイル名を入れたい!

カレントディレクトリ以下のファイルを連結したいのですが、 cat `find ./` > for_print.txt に「ファイル名」と、 あと、「区切り」がわかるように ******************************** を入れたいのですが、 どうしたら良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.3

セパレータの形式にこだわらないのであれば、 more `find ./` > for_print.txt とか、 tail +0 `find ./` > for_print.txt とか。

goonejp
質問者

お礼

皆様、ありがとう御座います! とりあえず、ちょっと使うだけなので、 これが便利かな…。 セパレーターと情報も入って、ステキです!

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

第1引数をファイル名として、第1引数およびそれで指定されるファイル内容、区切り文字を出力するシェルスクリプトを作成して、そいつをfind結果に適用されるって手でどうでしょう。こんな感じ: % cat a,sh echo $1 cat $1 echo '*END*' % find . -type f|xargs -I % sh a.sh % xargsについては、man xargsを参照の事。

  • corgi12kg
  • ベストアンサー率51% (28/54)
回答No.1

シェルにしたらどうでしょうか? #! /bin/sh for fname in `find .` do echo '*****' $fname '*****' cat $fname done exit

関連するQ&A

  • cat でファイルの拡張子を指定

    基本的なことで申し訳ないんですが、 UNIXのcat コマンドでファイルの中身を出力するときに、カレントディレクトリでないファイルを出力するには、パスも書きますよね。 cat パス/ファイル名 catでパスを指定して使うときに、 パスを繰り返し書かないで、 (その指定したディレクトリ直下だけでいいので)複数の特定の拡張子のファイルのみ出力するには、どうすればよいのですか? 例えば、 拡張子が、cとcsとtxtのファイルだけ出力して、その他のファイルは出力しない というようなときです。 既に書いたとおり、パスは繰り返して書かないので、 cat パス/*.c パス/*.cs パス/*.txt のようなものはナシということでお願いします。

  • ファイル名が記入されたファイルを読み込んでcdする

    ファイル名が記入されたファイルを読み込んでカレントディレクトリを変更するにはどうしたら良いでしょうか?   具体的に申し上げると、    カレントディレクトリに filepass.txt というファイルが存在し、 中身には、例えば、 C:\Software と書かれています。   MATLABで、 filepass.txtを読み込み、 中に書かれている、 ディレクトリ名に、   カレントディレクトリを変更する(cd) にはどうしたらよいでしょうか?

  • cmdでtxtファイルの生成

    思い出集  ∟旅行   ∟写真  ∟映画   ∟写真  ∟温泉   ∟写真 上記のような「フォルダ構造」があります。 それぞれの「写真」フォルダ内に、直前のフォルダ名をファイル名としたtxtファイル(旅行.txt、映画.txt…)を生成したいと考え、下記のようなcmdコマンドを書き、「思い出集」フォルダをカレントディレクトリにして実行してみました。 FOR /D %A IN (*) DO echo a > %A.txt フォルダ名を取得するまでは良いのですが、txtファイルが生成される場所がカレントディレクトリである「思い出集」フォルダになってしまいます。 これをそれぞれの「写真」フォルダ内に生成するには、どのようなコマンドを書いたらよいのでしょうか? よろしくお願いいたします。

  • 一括でファイル名の一部を置換したい

    LinuxのFedora Core 10, シェルにtcshを使用しています。よろしくお願いします。 ======================================================================= 複数のディレクトリ内に、"(from home)"のような文字列を含むファイルがあり、 それらのファイル名から一括で"(from home)"という文字列を取り除きたいのですが ======================================================================= 例えば以下のように、2つのディレクトリ(Directory1,Directory2)の下に、 "(from home)"という文字列を含むファイルが2つずつある場合を考えて、 /Directory1/sample (from home).txt         sample2 (from home).txt /Directory2/ sample3 (from home).txt          sample4 (from home).txt > rename "(from home)" "" `find / -name "(from home)" -print` を試したのですが上手くいかず、 > foreach i (`find / -name "(from home)" print`) foreach? rename "(from home)" "" $i foreach? end でも上手くいきませんでした。 もしかしたらfindコマンドで見つけたファイル名をrenameコマンドに 上手く渡せていないのかと思うのですが、どのようにすれば良いのでしょうか? また別の方法でも、一括でファイル名の一部を変更する方法があれば、 ご教授お願い致します。

  • grepでファイル名を取得したい。

    いま以下の構成になっています。 カレントディレクトリの(ディレクトリを除く)ファイル名を取得し,list.txtに出力する作業をやってます。 そういうオプションがあれば良いのですがなかなか見つかりません。知恵をお貸しください。 list -F |& grep (???) > list.txt -Fでディレクトリの最後に/がつくので,(???)の部分でそれらのファイルを除く,とする方針…?と思ったのですが,うまいやり方が見つかりません。 よろしくお願いします。

  • ファイルの中の文字を検索してパスとファイル名と行を調べたいのですが

    現ディレクトリからどこかにある(カレントディレクトリもしくは下の階層)ファイルの中の文字を探して、パスとファイル名と行番号を表示させるにはどうすればいいのでしょうか (例)例 現Cドライブ→下のフォルダ→下のフォルダ→下のフォルダ→xxx.txtの中に含まれる文字 abc(10行目)を探したい 結果 c/フォルダ/フォルダ/フォルダ/xxx.txt 10行目 findとgrepでなんとかできそうな気がするのですが どなたかわかる方教えてください

  • fopenでファイル名に、変数を使いたい

    カレントディレクトリにある「1.txt」を扱う場合は fp = fopen("./1.txt", "r"); 上記で出来るのですが、扱いたいファイルが複数あり、 「./x.txt」 として、「x」の値を変えながら複数のファイルを取り扱いと考えております。 char namae[2]={'1','2'}; for(x=0;x<2;x++) fp = fopen("./%c.txt",name[x], "r"); とやってみたのですが、 「fopenの呼び出しに余分なパラメータがある」と出てしまいます。 どのようにしたら、よろしいでしょうか?

  • バッチファイル(for文について)

    あるディレクトリにある*.txtを取得し、 ファイル名の頭3文字を取得したいと思っています。 どう記述すればいいのでしょうか? for %%a in (*.txt) do (%%aの頭3文字取得)

  • unixのfindコマンド

    unixのfindコマンドで、ある複数のディレクトリから指定のファイル名だけを 検索し、その結果をgrepしたいのですが、 例えば 01_dir 02_dir : 11_di : 21_dir : と言うディレクトリがあります。 そこから、「0」で始まっているディレクトリの中なら拡張子が*.txtを 検索し、その検索したファイルに対して、grepを実行したいのですが、 上手くいきません。 もちろん、各ディレクトリには、「.txt」以外のファイルもありますし、 ファイル名にも条件を付与したいです。 以下の様に、 find . -name "0*_dir" -type d -print | xargs ls -l *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs ls *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls -l '{} /*.txt' | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls {} "検索文字" とやってみたのですがだめでした。 find ./ -type d \( -name '1_*dir' -o -name '2*_dir' -o -name '3*_dir' \) -prune -o -type f -print と「-prune」で除外するディレクトリを指定すればできなくはないですが、 すべてのディレクトリ書くのはいい方法ではないです。 よい方法をお願いします。 OSは、Solaris 11.3です。

  • find で探したファイルを探した階層の一つ上へ移動したい

    findコマンドで、深い階層にあるファイルを一階層上へ移動するfindコマンド記述方法を探しています。 /home/user1/text/2007/01/06/text/aaa.txt を /home/user1/text/2007/01/06/aaa.txt へ移動するのが目的です。 ファイルの格納状況は、 /home/user1/text/[1983-2007]/[01-12]/[01-31]/text/ という構造のディレクトリに*.txtが格納されています。 suse10.0, bashです。よろしくお願いいたします。

専門家に質問してみよう