• ベストアンサー

「再帰的に比較」とはどのような比較のことを言うのですか?

「再帰的に比較」とはどのような比較のことを言うのですか? Linux diffコマンドのオプション[-r]の説明に「ディレクトリを比較するとき、見付かったサブディレクトリをすべて再帰的に比較する」とあります。「サブディレクトリをすべて比較する」なら分かるのですが「再帰的に」という意味が分かりません。理解を深めるためご教示お願いします。 再帰 ー 再帰(さいき)とは、あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいう。定義において、再帰があらわれているものを再帰的定義という。(Wikipediaより)

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

  • ベストアンサー
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

一般的な用語ですが、コンピューターソフトプログラム用語でもあります。 >。「サブディレクトリをすべて比較する」なら分かるのですが「再帰 ですが、一見すると 「サブディレクトリをすべて比較する」=「再帰的に」 に取れますが、前述の言葉は文は階層の意味が確定して入っていません。サブディレクトリとは、そのフォルダーの1階層したのフォルダーを指す場合がほとんどです。一般的な用語からすると、サブとつくんだから、その下も、また、その下も、と考えてしまうのは、日本人的な英語解釈で和製日本語ですね。 サブフォルダーとは、対象のフォルダーの1階層下のフォルダー全て。と認識してください。 一方の「再帰的」とは、あなたが調べた、説明でほぼあっています。この場合の再起的とは、上記で説明した1階層したのサブフォルーダーの更に1階層した、さらに・・・ とフォルダーがなくなるまでを検索する事を意味しています。 となるので、正確には「再帰的に検索して比較する」と言う表現が、コンピューターの世界の慣例に従う事になります。 ただし、一般的に素人に話す時は、「サブディレクトリをすべて比較する」でもぜんぜん問題ありません。そこが日本語の難しい所です。 あなたが指摘した事は、とても正しい事です。これらの事を理解せずに、 「質問を理解しないで、回等している」 とかいっているユーザー(このサイトの社員か関係者、お金もらっている人と思われるが)がいるが、その人の回答みると、上記のような事を理解していないで、知識だけで回答しているので、質問の本質を理解してないで、他人を非難している人が多く見受けられます。 ちゃんと質問の内容で状況を完璧に把握するためには、何度か質問をしないと、絶対に的を得た回答はできないはずです。それらを理解していない、小学生レベルの回答者が多いです。

abcron
質問者

お礼

サブフォルダーとは、対象のフォルダーの1階層下のフォルダー全て。と認識してください。 →ずばりこの認識が足りませんでした。英語圏ではあくまで1階層下を指すのですね。さらにその下の階層までチェック対象に入れるのであれば、それを示す単語が必要となるとのことですね。それが、「再帰的に」という単語で示されることを理解しました。ありがとうございます。

その他の回答 (2)

  • Kotori_D
  • ベストアンサー率36% (54/149)
回答No.3

プログラムでの再起処理は簡単に言えば「自分の中に自分と同じ処理を入れる」というものです。 今回、「すべてのサブディレクトリを比較」と書かれていますが、確かに結果は同じですが、処理としては少々複雑になります。 プログラムでは「指定したディレクトリ」の「サブディレクトリ」を取得する処理を行いますが、もし、サブディレクトリ内にさらにサブディレクトリがあった場合、また「指定したディレクトリ」の「サブディレクトリ」を取得することになります。 たとえば。。。 1、指定ディレクトリへ移動 2、現行ディレクトリの中のサブディレクトリを検索 3、現行ディレクトリの中にサブディレクトリがあるか?   →あるならサブディレクトリの数だけ別処理として手順1を実行   →ないなら現行処理を終える。 といった処理になります。 同じプロセスであるのに、1つの処理の中でプロセスを再起動し、それが終わると戻ってきて同じ処理を行う。 これでどんなに階層を持ったディレクトリであろうと最後まで検索がおこなえます。 こんな感じでどうでしょう。

abcron
質問者

お礼

「サブディレクトリを検索するための一連のプロセス」を対象として”再帰的な”という表現を用いているわけですね。ファイル同士の比較を対象としているものと受け取ってしまったため混乱しました。分かりやすく説明していただきありがとうございました。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

もう一つ言うのを忘れました。 >「サブディレクトリをすべて比較する」なら の「サブディレクトリ」は、正しくは間違っています。ディレクトリとは、フォルダーの階層を意味していますので、それに「サブ」がつくのはおかしいですね。階層(ツリー構造)の中に、「サブ」と言う概念はありませんね。これはあながた作った造語か、正しく用語を理解していない方いっている言葉でしょう。 「サブ」とつく場合は「サブフォルダー」となります。 なので、 「ディレクトリを比較するとき、見付かったサブディレクトリをすべて再帰的に比較する」 は正しくは、 「ディレクトリを比較するとき、見付かったサブフォルダーをすべて再帰的に比較する」 ただし、No1でも書きましたが、いずれにせよ和製英語として使うなら、どちらでも要件を説明しているといえます。

abcron
質問者

お礼

「ディレクトリ」と「フォルダ」は対象とするプラットフォームが異なるだけで、同じ意味を指す単語と認識していました。 その違いについて理解不足の点があり失礼しました。お聞きしたいしたいことはありますが、本質問の主題とは異なるため別の機会にお聞きしたいと思います。 ご意見ありがとうございました。

関連するQ&A

  • UNIXで、ディレクトリを比較して、ファイル・ディレクトリの存在を比較したい

    やりたいこと自体は単純なことなのですが・・ UNIXのコマンドで、 2つのディレクトリA、Bを比較して、 Aだけにあるディレクトリ・ファイルのみを取得できるようなものを教えてください。 (ファイルが同一かどうかは問題ではなくて、あくまでも存在不存在の比較です。) コマンドを組み合わせたり、オプションを使ってもかまいません。 diffコマンドってこういうとき使えないのでしょうか。

  • sedを再帰的に

    ディレクトリ単位で、再帰的に文字列置換を行いたいのですが、 sedコマンドでそのようなオプションはありますでしょうか? また、よい方法があればご教授お願い致します。

  • ディレクトリの中の多階層を再帰的に処理したい

    お世話になります。 WindowsのコマンドのFORコマンド(ディレクトリ内のファイル全体、あるいは再帰的に処理を行う)と同じことをlinuxでしたいのですが、同じ、あるいは同じことが実現できるコマンドをご存知ありませんか? 再帰的にパーミッションの設定等を行いたいと考えています。

  • ファイルを比較して検索するソフト

    ハードディスク内で、画像、文書、ソフトなどにおいて、ファイル名は異なっているものの、同一ファイルを見つけ出す方法として、diff コマンド(-r オプションで、フォルダ又はディレクトリ単位で比較。テキスト、バイナリのどちらでも比較可。違う場所があれば、その場所と内容も表示される。元々は Unix 系のコマンド)と同じような機能のあるWindows用ソフトを知っている方がおりましたら教えてください。

  • cpコマンドのオプションについて

    現在、Linuxについて学習を進めていますが、cpコマンドの以下のオプションの意味の違いが分かりませんので、ご教授いただけますでしょうか。 -a : コピー元のファイルとディレクトリを再帰的にコピー。 -r : ディレクトリ内を再帰的にコピー。 ちなみに、-rは使うなと書いてあるサイトもありました。

  • linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法

    linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法を教えてください。 簡単な事なのかもしれませんが、コマンドから打つ場合、どのようにすればよいか、分かりません。 Windows の秀丸のgrepなら簡単に出来るのですが。。。 どなたか教えてくださいませ。。。

  • サブディレクトリも含めて最新のファイルを調べる

    Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて) 更新日時が最新のファイルを抽出したいのですが やり方をご存知であれば教えてください。 ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが 再帰的にすべてのサブディレクトリを対象としたいのです。 できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、 それはさすがに大変な気がしますので、 あくまでできればということで。。

  • ディレクトリを再帰的に探索する正規表現

    javaファイルを引数に取るプログラムを全てのjavaファイルに対して走らせたいのですが、 あるディレクトリ内(サブディレクトリ内を含めて)のjavaファイルを指定するような正規表現の書き方がわかりません。 直下だけならjava (プログラム名) *.javaで大丈夫なのですが、再帰的にサブディレクトリもさがすにはどのように書けばいいのでしょうか

  • 拡張子を指定して、ファイルの差分を取る方法

    WindowsXPです。 フォルダを比較して、ファイル(テキストファイル)の差分をとる方法をお教えください。 ここで重要な条件は、比較する拡張子を指定できなければなりません。 例えば、拡張子が、txtのファイルのみとか、txtとcfのみなど。 サブディレクトリの中のファイルも比較できなければなりません。 どうも、このような場合には、diffというものを使うらしいのですが、 コマンドプロンプトでdiffと打っても 「'diff' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 というだけで、使えないようです。

  • Windows用ファイル比較プログラム

    Windows用のファイル比較を探しています。 要件は以下のとおりです。 ・コマンドラインインターフェイスであり、完全無人バッチ処理ができる ・サブディレクトリを再帰的に比較をする ・ERRORLEVELで一致しているか一致していないか判別できる ・VB等外部ランタイムを使用しないもの ・2Gbytes以上のファイルも正常に比較できること ・タイムスタンプの比較をオプション等で無視できること ・可能であれば、64bitネイティブがあること タイムスタンプの比較、2Gbytes以上のファイル以外の機能であれば fcmp32 が該当していて、使えましたが 2Gbytes以上のファイルがかなり多くなってきてエラーが出てきています。 fc.exe は、ディレクトリ名の指定方法により、File not found (Directoryではなく)に なってしまい、比較ができません。 現在、代替えで、WinMergeを使用していますが、GUI故・・・ よろしくお願いします。