• ベストアンサー

シェルスクリプトで

いくつかのテキストファイルがあって, その中で内容が重複するもの(ファイル名は違うが中身は同じ)ファイルをみつけるシェルスクリプトが書きたいのですが, どのように書けばよいでしょうか. というかそのように書くことは可能でしょうか. ぶしつけですいませんが,回答お願いいたします.

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

  • ベストアンサー
  • eroermine
  • ベストアンサー率18% (83/444)
回答No.3

#! /bin/csh foreach i ( * ) if ( ! -d $i ) then foreach j ( * ) if ( ! -d $j ) then diff $i $j > /dev/null if ( $status == 0 ) then echo samefile $i $j endif endif end endif end だいたいこんな感じで

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

半自動でやるのがいいと思います。 wc というコマンドで、行数・単語数・総バイト数を表示できますので、 wc file1 file2 file3 .... | sort -n とすると、内容が同じなら上記の数字が等しいので、同じ内容の見当を付け、もし file1 と file8 が同じであれば、 cmp file1 file8 で、内容の比較をします。違う点があれば表示され、無ければ(全く同じファイルなら)なにも表示されません。 そのものずばりのソフトがあったはずなのですが、思い出せません。

  • Gizensha
  • ベストアンサー率34% (207/608)
回答No.1

diffコマンドをうまく使えばできるような気もします。

関連するQ&A

  • シェルスクリプトに関する質問です

    シェルスクリプトに関する質問です 以下のようなシェルスクリプトを書きたいのですが,難しくて出来無いのでどなたか ご協力お願いします。 foldaという名前のフォルダの中に1~100のフォルダがある. それら100個のフォルダの中に,それぞれfile.txtというテキストファイルがあり,これには 112.73 のように小数点ありの数字が1行書かれている. このfile.txtの内容を全て読み取って,それら100個分のデータを 1つのファイルに出力するスクリプト スクリプトファイルはfoldaの中にあるものとする. よろしくお願いします.

  • シェルスクリプトについて

    シェルスクリプトについて教えてください このようなテキストファイルがあるとします。 .1 あ い う え お .2 か き く け こ .3 さ し す せ そ このファイルを「.」で区切ってそれぞれのファイルに分割するには どうすればいいのでしょうか? 結果として、 .1 あ い う え お と言うファイルや .2 か き く け こ と言うファイルに分けたいのです。

  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

  • シェルスクリプトについて(POSIX)

    シェルスクリプトを書いていますが、思うように動きません。シェルにお詳しい方がいらっしゃいましたら、ご教授ください。以下のような仕様です。 1.Working dierctoryの中から目的のファイルを検索 2.検出されたファイルの内容を1行ずつ表示させる。 このような簡単な仕様なのですが、awkを使用する必要はありますでしょうか? シェルは初めてなので勉強不足なため、ここで質問するにあたり、情報が不足していましたら、どうぞ補足してください。宜しくお願い致します。

  • シェルスクリプトについて。

    Bシェルを使って、下記の処理をしたいと思っているのですが 何をやっても上手くいきません;; 分かる方、是非アドバイスいただきたいです! WEBからawk,while等を調べて自分なりにつくってみましたが 文字列の抽出もできない状態です。 ------------------------------ テキスト内容(例) 氏名[タブ]住所[タブ]電話番号 ------------------------------- 上記のような、テキストから住所だけ、指名と住所だけ等の パターンで抜いて、別のシェルの引数として渡すといった処理が したいです。 別のシェルというのは、引数に与えられた内容を、別のファイルに 書き出すという仕組みですが、よくわかりません。 今までいっぱい行がある中から、ひとつひとつ手作業で引数に渡し てたのを、自動でやりたいです。 日本語がおかしい所があると思いますが、宜しくお願いします。

  • シェルスクリプトでのcopy

    いつもお世話になっています。 基本がわかっていないので、お手数ですがよろしくお願いいたします。 シェルスクリプトでvacuumやcopyを行いたいのですが、どんな感じで シェルスクリプトを作成すれば良いのか分かりません。 参考サイトで構いませんのでお助けお願いいたします。 またシェルで同じテーブルに対し\copy...fromを同時に実行した 場合、問題はないのでしょうか?(キーが重複するデータはありません。)

  • シェルスクリプト while read lineにつきまして

    シェルスクリプトについて、各行の値を使って、更新したいと考えています。 引数を2つ持たせて、2つともファイルです。 ファイル名1には、 test1 test2 test3 のディレクトリを記載し、 ファイル名2には、 test4.txt test5.txt test6.txt のテキストを記載します。 例) 引数1 ファイル名1 引数2 ファイル名2 while read lineをどのように使ったら良いかわからないのですが、 ファイル名1を1行ずつ読み込んで、 読み込んだディレクトリをファイル名2に書かれているテキストを更新します。 具体的にやりたいと思っている内容ですが、 ・cd ファイル名1の1行目ディレクトリ ・svn up ファイル名2のテキスト ここをファイル名2に書かれている行分ループして 上記svn upコマンドを実行します。 ・ファイル名2に書かれている行分ループ完了後、 ファイル名1の2行目にかかれているディレクトリを読み込んで、 cd ファイル名1の2行目ディレクトリ ・svn up ファイル名2のテキスト ここをファイル名2に書かれている行分ループ。 という形のシェルスクリプトを作成したいと思っています。 上手く説明できないのですが、このようなことが出来るのかお教えいただけますでしょうか。 出来るのであれば、どのようにすればできるのかご教授いただけると幸いです。 宜しくお願い致します。

  • C言語とシェルスクリプトまたはバッチファイルで簡単なファイル暗号化

    C言語とシェルスクリプトまたはバッチファイルで簡単なファイル暗号化 C言語とシェルスクリプトで簡単な暗号化ソフトを作ろうと思っています。内容は、ファイルの中身を16進数か、2進数に書き換えて、テキストファイルか、バイナリファイルか、オリジナルの拡張子を作って暗号ファイルに変換使用と考えています。出来たら、暗号化したファイルを2~5位に分離出来るようにオプションを作ろうと、思っています。C言語は、始めたばかりなので分からないこともありますが、全然気にしないでください。GUIはめんどくさいので、できればCUIで作れるようにしたいです。

  • シェルスクリプトの内容について

    業務で使用しているシェルスクリプトの中身に find A/B/ -name File1 -exec mv {}/C/D \; ※AとBとCとDはディレクトリ名、File1はファイル名   という記述があってfindによる検索結果をmvの引数に持ってきて C/D/の直下にFile1を移動している意味はわかったのですが最後尾にある「¥」の意味がよくわかりません。 よろしくお願いします。

  • UNIXのシェルスクリプト

    UNIXのシェルスクリプトで以下のようなことをやりたいのですがいい方法を教えて下さい。 ファイルの中にある文字列があります。 たとえば”CURREND_DIR” この文字列をシェルスクリプトでカレントのディレクトリパスに変換したいのですが いい方法が思いつきません。 set dir_data = ‘pwd‘ sed -e ’s/CURRENT_DIR/$dir_data’ ファイル名 でできるかなと思ったのですが、”CURRENT_DIR”が”$dir_data”に置換されてしまいます。 さらにdirパスが”/”で区切られていることも問題のようです。

専門家に質問してみよう