SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
find         1
main.c
find.c
option.c
operator.c
ls.c
function.c
misc.c
findの構造                                                         2
main(int argv, char **argc)
main(int argv, char **argc)                     1.オプションの解析
           main.c                               1.オプションの解析
           main.c
                                                2.PLAN* の作成
                                                2.PLAN* の作成
                   PLAN *find_formplan(char *argv[])
                   PLAN *find_formplan(char *argv[])
                                 find.c
                                 find.c
                     PLAN *find_create(char ***argvp)
                     PLAN *find_create(char ***argvp)
                                 option.c
                                 option.c
                     OPTION *lookup_option(const char *name)
                     OPTION *lookup_option(const char *name)
                                     option.c
                                     option.c
                     int typecompare(const void *a, const void *b)
                     int typecompare(const void *a, const void *b)
                                        option.c
                                        option.c

                                                3.PLAN* の実行
                                                3.PLAN* の実行
                   int find_execute(PLAN *plan, char *paths[])
                   int find_execute(PLAN *plan, char *paths[])
                                      find.c
                                      find.c
1.オプションの解析                                                                 3
オプション⇒"EHLPXdf:sx"
usage: find [-H
usage: find [-H   |
                  |   -L
                      -L   |
                           |   -P]
                               -P]   [-EXdsx]
                                     [-EXdsx]   [-f path] path ...
                                                [-f path] path ...   [expression]
                                                                     [expression]
       find [-H
       find [-H   |
                  |   -L
                      -L   |
                           |   -P]
                               -P]   [-EXdsx]
                                     [-EXdsx]   -f path [path ...]
                                                -f path [path ...]   [expression]
                                                                     [expression]



Manpageより
find ユーティリティは、 pathname に対してディレクトリ
find ユーティリティは、 pathname に対してディレクトリ
ツリーを再帰的に下って、ツリー上の各ファイルについて
ツリーを再帰的に下って、ツリー上の各ファイルについて
expression (後に示す``プライマリ''と``演算子'' から構
expression (後に示す``プライマリ''と``演算子'' から構
成されます) で指定された処理を実行します。
成されます) で指定された処理を実行します。
2.オプションの種類                                      4
オプション
オプション                       効果
                            効果
        -regex および -iregex の後の正規表現を、基本正規表現(BRE)でなく拡張
        -regex および -iregex の後の正規表現を、基本正規表現(BRE)でなく拡張
  E
  E     正規表現として解釈。regexp_flags に 0001 を立てる。
        正規表現として解釈。regexp_flags に 0001 を立てる。
        直接指定された有効なシンボリックリンクを処理するときだけ、 リンク先をたど
        直接指定された有効なシンボリックリンクを処理するときだけ、 リンク先をたど
  H
  H     る。それ以外はたどらない。L、Pとは排他的。
        る。それ以外はたどらない。L、Pとは排他的。
        有効なシンボリックリンクをたどる。シンボリックリンクが無効なときはたどらな
        有効なシンボリックリンクをたどる。シンボリックリンクが無効なときはたどらな
  L
  L     い。H、Pとは排他的。
        い。H、Pとは排他的。
        シンボリックリンクをまったくたどらない。デフォルトの動作。H、Lとは排他的。
        シンボリックリンクをまったくたどらない。デフォルトの動作。H、Lとは排他的。
  P
  P
        xargs的に無効な文字(スペース、タブ、LF、バックスラッシュ、シングルクォー
         xargs的に無効な文字(スペース、タブ、LF、バックスラッシュ、シングルクォー
  X
  X     ト、ダブルクォート)を含むパスは警告を出して、処理しない。
         ト、ダブルクォート)を含むパスは警告を出して、処理しない。
        深さ優先探索を行う。かといってデフォルトが幅優先かというとそうでもなく、デ
         深さ優先探索を行う。かといってデフォルトが幅優先かというとそうでもなく、デ
  d
  d     フォルトは”深さ優先探索だけどディレクトリを先に処理する版”。
         フォルトは”深さ優先探索だけどディレクトリを先に処理する版”。
        find が探索するファイル階層を指定する。引数を取る。が、-f自体書かなくても
         find が探索するファイル階層を指定する。引数を取る。が、-f自体書かなくても
  f
  f     同じ。
         同じ。
        探索時に、ディレクトリ内のファイルをアルファベット順に取得する。
         探索時に、ディレクトリ内のファイルをアルファベット順に取得する。
  s
  s
        探索開始ディレクトリと違うファイルシステムを探索しないようにする。
        探索開始ディレクトリと違うファイルシステムを探索しないようにする。
  x
  x
3.PLANの作成                                       5
関数 find_formplan (find.c)
 PLAN * find_formplan(char *argv[])
でPLAN(リスト)を作成

PLAN *plan
PLAN *plan                    PLAN *tail
                              PLAN *tail
             next
             next      next
                       next     -print
                                -print
                                -exec
                                 -exec   next
                                         next
                                  -ok
                                  -ok


・最後のPLAN(*tail)は必ず
 -print、-exec、-okのどれかになる
 (find.c L117辺り~)
・print、exec、okが指定されていないとき
 勝手に'('')'付きで -print が補われる
・'('や')'も一つのPLANになる
4.(),!,orの処理                                                              6
作成したリストから()、!、orを処理する。
まず()を取り除く(サブプラン化する)。
$ find . ( ! -newer hoge -or -user foo ) -print
$ find . ( ! -newer hoge -or -user foo ) -print
( next
( next         !
               !    next
                    next     -newer hoge next
                             -newer hoge next    -or
                                                 -or    next
                                                        next


                                      -user foo next
                                      -user foo next      ) next
                                                          ) next    -print next
                                                                    -print next
         ()除外
         ()除外

               next
               next                                            -print
                                                               -print   next
                                                                        next
   expr
   expr
           p_data
           p_data


           !
           !       next
                   next    -newer hoge next
                           -newer hoge next     -or
                                                -or    next
                                                       next    -user foo
                                                               -user foo   next
                                                                           next
4.(),!,orの処理                                                          7
次に!の否定先をサブプランにする。
       next
       next                                                -print
                                                           -print   next
                                                                    next
expr
expr
       p_data
       p_data
                    ! next
                    ! next   -newer hoge next
                             -newer hoge next   -or next
                                                -or next      -user foo next
                                                              -user foo next



              !処理
              !処理

       next
       next                                                -print
                                                           -print   next
                                                                    next
expr
expr
       p_data
       p_data
                     next
                     next                       -or next
                                                -or next      -user foo next
                                                              -user foo next
                !
                !
                    p_data
                    p_data   -newer hoge next
                             -newer hoge next
4.(),!,orの処理                                                                8
最後に-orを処理する。
       next
       next                                                     -print
                                                                -print    next
                                                                          next
expr
expr
       p_data
       p_data
                       next
                       next                          -or next
                                                     -or next      -user foo next
                                                                   -user foo next
                 !
                 !
                      p_data
                      p_data     -newer hoge next
                                 -newer hoge next

                                                     -or処理
                                                     -or処理
       next
       next
expr
expr                                                      -print   next
                                                          -print   next
       p_data
       p_data          next
                       next
                                            next
                                            next
                -or p_data[0]
                -or p_data[0]           !
                                        !
                                            p_data
                                            p_data       -newer hoge next
                                                         -newer hoge next
                     p_data[1]
                     p_data[1]

                                                         -user foo next
                                                         -user foo next

Weitere ähnliche Inhalte

Was ist angesagt?

C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜勝成 鈴江
 
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-t-sin
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようHiro H.
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 
Extensible Eff Applicative
Extensible Eff ApplicativeExtensible Eff Applicative
Extensible Eff ApplicativeSanshiro Yoshida
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングt-sin
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bashJun Nogata
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsHiromi Ishii
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Hiro H.
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)Hiro H.
 
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」Hiro H.
 
Ocaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axshOcaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axshTomofumi Hayashi
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10Shin Ise
 
Start haskell zipper
Start haskell zipperStart haskell zipper
Start haskell zipperShoko Sasaki
 

Was ist angesagt? (20)

C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
MP in Scala
MP in ScalaMP in Scala
MP in Scala
 
Sml#探検隊
Sml#探検隊Sml#探検隊
Sml#探検隊
 
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
MP in Haskell
MP in HaskellMP in Haskell
MP in Haskell
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 
Extensible Eff Applicative
Extensible Eff ApplicativeExtensible Eff Applicative
Extensible Eff Applicative
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible Effects
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
 
Ocaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axshOcaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axsh
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10
 
Start haskell zipper
Start haskell zipperStart haskell zipper
Start haskell zipper
 

Ähnlich wie Find(1)

Deque with Haskel
Deque with HaskelDeque with Haskel
Deque with HaskelKen Ogura
 
Adding simpl GVN path into GHC
Adding simpl GVN path into GHCAdding simpl GVN path into GHC
Adding simpl GVN path into GHCKei Hibino
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCamlHaruka Oikawa
 

Ähnlich wie Find(1) (6)

Deque with Haskel
Deque with HaskelDeque with Haskel
Deque with Haskel
 
C-langage
C-langageC-langage
C-langage
 
Adding simpl GVN path into GHC
Adding simpl GVN path into GHCAdding simpl GVN path into GHC
Adding simpl GVN path into GHC
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
 

Mehr von akitsukada

Solutions Architect, Exciting Career for Engineers
Solutions Architect, Exciting Career for EngineersSolutions Architect, Exciting Career for Engineers
Solutions Architect, Exciting Career for Engineersakitsukada
 
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless WaysMorning Session - AWS Serverless Ways
Morning Session - AWS Serverless Waysakitsukada
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startupsakitsukada
 
Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422akitsukada
 
Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016akitsukada
 
AWS Mobile Maniacs
AWS Mobile ManiacsAWS Mobile Maniacs
AWS Mobile Maniacsakitsukada
 
My Startup Learnings (短縮版)
My Startup Learnings (短縮版)My Startup Learnings (短縮版)
My Startup Learnings (短縮版)akitsukada
 
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"akitsukada
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"akitsukada
 
AWS for Startups 2016 (2015/12/02版)
AWS for Startups 2016 (2015/12/02版)AWS for Startups 2016 (2015/12/02版)
AWS for Startups 2016 (2015/12/02版)akitsukada
 
Awsjpcasestudies
AwsjpcasestudiesAwsjpcasestudies
Awsjpcasestudiesakitsukada
 
Mobile Hubで変わる、アプリ開発最前線
Mobile Hubで変わる、アプリ開発最前線Mobile Hubで変わる、アプリ開発最前線
Mobile Hubで変わる、アプリ開発最前線akitsukada
 
Auto Scaling x Spot Instances によるスケーラビリティと コストカット
Auto Scaling x Spot Instances によるスケーラビリティと コストカットAuto Scaling x Spot Instances によるスケーラビリティと コストカット
Auto Scaling x Spot Instances によるスケーラビリティと コストカットakitsukada
 
20140807 AWS Startup Tech Meetup
20140807 AWS Startup Tech Meetup20140807 AWS Startup Tech Meetup
20140807 AWS Startup Tech Meetupakitsukada
 
Little tips ios
Little tips iosLittle tips ios
Little tips iosakitsukada
 
データベース・リファクタリング読書会第四回オープニング
データベース・リファクタリング読書会第四回オープニングデータベース・リファクタリング読書会第四回オープニング
データベース・リファクタリング読書会第四回オープニングakitsukada
 
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜akitsukada
 
Find(ラスト)
Find(ラスト)Find(ラスト)
Find(ラスト)akitsukada
 

Mehr von akitsukada (20)

Solutions Architect, Exciting Career for Engineers
Solutions Architect, Exciting Career for EngineersSolutions Architect, Exciting Career for Engineers
Solutions Architect, Exciting Career for Engineers
 
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless WaysMorning Session - AWS Serverless Ways
Morning Session - AWS Serverless Ways
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startups
 
Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422
 
Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016
 
AWS Mobile Maniacs
AWS Mobile ManiacsAWS Mobile Maniacs
AWS Mobile Maniacs
 
My Startup Learnings (短縮版)
My Startup Learnings (短縮版)My Startup Learnings (短縮版)
My Startup Learnings (短縮版)
 
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
 
AWS for Startups 2016 (2015/12/02版)
AWS for Startups 2016 (2015/12/02版)AWS for Startups 2016 (2015/12/02版)
AWS for Startups 2016 (2015/12/02版)
 
Awsjpcasestudies
AwsjpcasestudiesAwsjpcasestudies
Awsjpcasestudies
 
Mobile Hubで変わる、アプリ開発最前線
Mobile Hubで変わる、アプリ開発最前線Mobile Hubで変わる、アプリ開発最前線
Mobile Hubで変わる、アプリ開発最前線
 
Auto Scaling x Spot Instances によるスケーラビリティと コストカット
Auto Scaling x Spot Instances によるスケーラビリティと コストカットAuto Scaling x Spot Instances によるスケーラビリティと コストカット
Auto Scaling x Spot Instances によるスケーラビリティと コストカット
 
20140807 AWS Startup Tech Meetup
20140807 AWS Startup Tech Meetup20140807 AWS Startup Tech Meetup
20140807 AWS Startup Tech Meetup
 
Little tips ios
Little tips iosLittle tips ios
Little tips ios
 
データベース・リファクタリング読書会第四回オープニング
データベース・リファクタリング読書会第四回オープニングデータベース・リファクタリング読書会第四回オープニング
データベース・リファクタリング読書会第四回オープニング
 
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
 
Printf
PrintfPrintf
Printf
 
With git
With gitWith git
With git
 
Find(ラスト)
Find(ラスト)Find(ラスト)
Find(ラスト)
 

Kürzlich hochgeladen

20240319_case___________________________
20240319_case___________________________20240319_case___________________________
20240319_case___________________________i Smart Technologies
 
総合カタログ_日東工営株式会社
総合カタログ_日東工営株式会社総合カタログ_日東工営株式会社
総合カタログ_日東工営株式会社nittohkoeiweb
 
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料ssuser5a38bf
 
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版DIGITAL VORN
 
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdfjun_suto
 
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf株式会社オプティマインド
 
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用wataruhonda3
 
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profilevrihomepage
 
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf株式会社オプティマインド
 
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版DIGITAL VORN
 
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料inoue13
 
20240318_case___________________________
20240318_case___________________________20240318_case___________________________
20240318_case___________________________i Smart Technologies
 
ROMS_recruting_deck_for_website_20240322.pdf
ROMS_recruting_deck_for_website_20240322.pdfROMS_recruting_deck_for_website_20240322.pdf
ROMS_recruting_deck_for_website_20240322.pdfhirokisawa3
 
20240209_case___________________________
20240209_case___________________________20240209_case___________________________
20240209_case___________________________i Smart Technologies
 
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版DIGITAL VORN
 
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料ssuser5a38bf
 
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版DIGITAL VORN
 

Kürzlich hochgeladen (17)

20240319_case___________________________
20240319_case___________________________20240319_case___________________________
20240319_case___________________________
 
総合カタログ_日東工営株式会社
総合カタログ_日東工営株式会社総合カタログ_日東工営株式会社
総合カタログ_日東工営株式会社
 
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
 
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版
株式会社デジタルフォルン_会社説明資料~事業内容~         2024年版
 
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf
令和5年度_サステナブルツーリズムセミナー_ビジュアルレポート(公開用).pdf
 
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf
【株式会社オプティマインド】会社紹介資料(2024年04月更新)_中途採用.pdf
 
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用
HRMOS(ハーモス)タレントマネジメント_ご紹介資料_Saleshub掲載用
 
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile
株式会社ベクトル総研会社概要 Vector Research Institute (VRI) Corporate Profile
 
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf
【株式会社オプティマインド】会社紹介資料_2024年4月11日更新(採用資料).pdf
 
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版
株式会社デジタルフォルン_会社説明資料~仕事内容~         2024年版
 
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料
「育て」「動かし」「評価する」PRMツール。「PartnerProp」パートナープロップサービス資料
 
20240318_case___________________________
20240318_case___________________________20240318_case___________________________
20240318_case___________________________
 
ROMS_recruting_deck_for_website_20240322.pdf
ROMS_recruting_deck_for_website_20240322.pdfROMS_recruting_deck_for_website_20240322.pdf
ROMS_recruting_deck_for_website_20240322.pdf
 
20240209_case___________________________
20240209_case___________________________20240209_case___________________________
20240209_case___________________________
 
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版
株式会社デジタルフォルン_会社説明資料~その他の働く環境~         2024年版
 
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
Sportip, Inc. Company Deck 2024|株式会社Sportip紹介資料
 
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版
株式会社デジタルフォルン_会社説明資料~カルチャー~         2024年版
 

Find(1)

  • 1. find 1 main.c find.c option.c operator.c ls.c function.c misc.c
  • 2. findの構造 2 main(int argv, char **argc) main(int argv, char **argc) 1.オプションの解析 main.c 1.オプションの解析 main.c 2.PLAN* の作成 2.PLAN* の作成 PLAN *find_formplan(char *argv[]) PLAN *find_formplan(char *argv[]) find.c find.c PLAN *find_create(char ***argvp) PLAN *find_create(char ***argvp) option.c option.c OPTION *lookup_option(const char *name) OPTION *lookup_option(const char *name) option.c option.c int typecompare(const void *a, const void *b) int typecompare(const void *a, const void *b) option.c option.c 3.PLAN* の実行 3.PLAN* の実行 int find_execute(PLAN *plan, char *paths[]) int find_execute(PLAN *plan, char *paths[]) find.c find.c
  • 3. 1.オプションの解析 3 オプション⇒"EHLPXdf:sx" usage: find [-H usage: find [-H | | -L -L | | -P] -P] [-EXdsx] [-EXdsx] [-f path] path ... [-f path] path ... [expression] [expression] find [-H find [-H | | -L -L | | -P] -P] [-EXdsx] [-EXdsx] -f path [path ...] -f path [path ...] [expression] [expression] Manpageより find ユーティリティは、 pathname に対してディレクトリ find ユーティリティは、 pathname に対してディレクトリ ツリーを再帰的に下って、ツリー上の各ファイルについて ツリーを再帰的に下って、ツリー上の各ファイルについて expression (後に示す``プライマリ''と``演算子'' から構 expression (後に示す``プライマリ''と``演算子'' から構 成されます) で指定された処理を実行します。 成されます) で指定された処理を実行します。
  • 4. 2.オプションの種類 4 オプション オプション 効果 効果 -regex および -iregex の後の正規表現を、基本正規表現(BRE)でなく拡張 -regex および -iregex の後の正規表現を、基本正規表現(BRE)でなく拡張 E E 正規表現として解釈。regexp_flags に 0001 を立てる。 正規表現として解釈。regexp_flags に 0001 を立てる。 直接指定された有効なシンボリックリンクを処理するときだけ、 リンク先をたど 直接指定された有効なシンボリックリンクを処理するときだけ、 リンク先をたど H H る。それ以外はたどらない。L、Pとは排他的。 る。それ以外はたどらない。L、Pとは排他的。 有効なシンボリックリンクをたどる。シンボリックリンクが無効なときはたどらな 有効なシンボリックリンクをたどる。シンボリックリンクが無効なときはたどらな L L い。H、Pとは排他的。 い。H、Pとは排他的。 シンボリックリンクをまったくたどらない。デフォルトの動作。H、Lとは排他的。 シンボリックリンクをまったくたどらない。デフォルトの動作。H、Lとは排他的。 P P xargs的に無効な文字(スペース、タブ、LF、バックスラッシュ、シングルクォー xargs的に無効な文字(スペース、タブ、LF、バックスラッシュ、シングルクォー X X ト、ダブルクォート)を含むパスは警告を出して、処理しない。 ト、ダブルクォート)を含むパスは警告を出して、処理しない。 深さ優先探索を行う。かといってデフォルトが幅優先かというとそうでもなく、デ 深さ優先探索を行う。かといってデフォルトが幅優先かというとそうでもなく、デ d d フォルトは”深さ優先探索だけどディレクトリを先に処理する版”。 フォルトは”深さ優先探索だけどディレクトリを先に処理する版”。 find が探索するファイル階層を指定する。引数を取る。が、-f自体書かなくても find が探索するファイル階層を指定する。引数を取る。が、-f自体書かなくても f f 同じ。 同じ。 探索時に、ディレクトリ内のファイルをアルファベット順に取得する。 探索時に、ディレクトリ内のファイルをアルファベット順に取得する。 s s 探索開始ディレクトリと違うファイルシステムを探索しないようにする。 探索開始ディレクトリと違うファイルシステムを探索しないようにする。 x x
  • 5. 3.PLANの作成 5 関数 find_formplan (find.c) PLAN * find_formplan(char *argv[]) でPLAN(リスト)を作成 PLAN *plan PLAN *plan PLAN *tail PLAN *tail next next next next -print -print -exec -exec next next -ok -ok ・最後のPLAN(*tail)は必ず  -print、-exec、-okのどれかになる  (find.c L117辺り~) ・print、exec、okが指定されていないとき  勝手に'('')'付きで -print が補われる ・'('や')'も一つのPLANになる
  • 6. 4.(),!,orの処理 6 作成したリストから()、!、orを処理する。 まず()を取り除く(サブプラン化する)。 $ find . ( ! -newer hoge -or -user foo ) -print $ find . ( ! -newer hoge -or -user foo ) -print ( next ( next ! ! next next -newer hoge next -newer hoge next -or -or next next -user foo next -user foo next ) next ) next -print next -print next ()除外 ()除外 next next -print -print next next expr expr p_data p_data ! ! next next -newer hoge next -newer hoge next -or -or next next -user foo -user foo next next
  • 7. 4.(),!,orの処理 7 次に!の否定先をサブプランにする。 next next -print -print next next expr expr p_data p_data ! next ! next -newer hoge next -newer hoge next -or next -or next -user foo next -user foo next !処理 !処理 next next -print -print next next expr expr p_data p_data next next -or next -or next -user foo next -user foo next ! ! p_data p_data -newer hoge next -newer hoge next
  • 8. 4.(),!,orの処理 8 最後に-orを処理する。 next next -print -print next next expr expr p_data p_data next next -or next -or next -user foo next -user foo next ! ! p_data p_data -newer hoge next -newer hoge next -or処理 -or処理 next next expr expr -print next -print next p_data p_data next next next next -or p_data[0] -or p_data[0] ! ! p_data p_data -newer hoge next -newer hoge next p_data[1] p_data[1] -user foo next -user foo next