• ベストアンサー

findの使用方法

findの使い方について質問があります。 パーミッション検索で、2種類のパーミッションに該当しないものを探したいのですが・・・・ find . -type d ! -perm 770 -or -prem 750 -print find . -type d ! -perm 770,750 -print find . -type d ! -perm '770,750' -print 上記のように記述してもうまくいきませんでした。 他に方法があるのであれば、教えてください。

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

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

find . -type d ! ( -perm 770 -o -perm 750 ) ではどうでしょう。 C-Shell等の場合、!と(・)はシェルで解釈されないよう、 バックスラッシュやクォーテーションでエスケープして おく必要があります。

poposan
質問者

お礼

大変ありがとうございました。 うまくいきました。

関連するQ&A

  • findの使用方法2

    find . -type d ! -perm 770 -o -perm 750 上記の文をBshにて実行したのですが、ディレクトリのみの出力って出来ないのでしょうか? 現在だと、マッチしたディレクトリ配下のファイルまで表示されてしまいます。 ご存知の方がいらっしゃいましたら、教えてくださいませ。

  • 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 コマンド(Unix)

    find コマンドで検索条件をANDで結んだりしたいのですが、うまくいきません。 あるサイトをまねて、find . -name abc -and -type d とやったのですが、-andでエラーメッセージが出てしまいます。(エラーメッセージはfind: bad option -andとfind:path-list predicate-list)-orの場合でも同じです。kshを使ってます。-and を使わないでfind . -name abcの時はきちんと検索できます。どなたか分かる方回答お願いします。

  • findとxargsの使い方で

    unixで、findとxargsを使って検索を行っています。 以下の様に、 find . -type f | xargs コマンド 例えば、 find . -type f | xargs ls -l を実行すると、 「xargs: 入力ファイルが壊れています。: バイトシーケンスが正しくありません。」 が出力されます。 何が原因なのでしょうか。 また、解消方法はどのようにすればよいのでしょうか。 環境は solaris10 LANG=ja_JP.UTF-8 sh or bash

  • Find2重使用後のFindNextの使用について

    Excel2003にて シート2に記載されている表のD列の中からFindを使用し、条件に該当するものを検索した後、該当する行のE列の値を取り出し、それを条件にしてシート3のL列をFindを使用し検索する。次に該当した行のQ列の値を取り出し、シート2のH列に記載するといった感じの内容をFindNextを使い繰り返すVBAを組んでいるのですが、FindNextを使用した際に検索結果がNothingになってしまいます。Findを2回使用しているのが原因なんでしょうかね?なにか有効な対策方法はないでしょうか?ご教授願います。 <イメージ> 検索条件1:2-1 (シート2)   D   E     H 1 2-1 田中   兵庫  ← H列にシート3で検索した住所を記載させたい。 2 2-2 吉田 3 2-3 山田 4 2-1 田上 検索条件2:(シート2で2-1の条件で検索された)田中 (シート3)    L   Q 1 吉田 大阪 2 田中 兵庫 3 田上 大阪 4 山田 奈良 <コード> Sub add() Dim class(1 To 10) As String class(1) = "2-1" class(2) = "2-2" class(3) = "end" i = 1 Do Until class(i) = "end" Set objFind = Worksheets(2).Columns("D").Find(class(i), LookIn:=xlValues) If Not objFind Is Nothing Then Do Until oldaddress > objFind.Row class_sh2_YLine = objFind.Row class_nm = Cells(class_sh2_YLine, "E") Set objFind2 = Worksheets(3).Columns("L").Find(class_nm, LookIn:=xlValues) If Not objFind2 Is Nothing Then class_sh3_YLine = objFind2.Row class_add = Worksheets(3).Range("Q" & class_sh3_YLine) Worksheets(3).Rows(class_sh3_YLine).Delete Worksheets(2).Cells(class_sh2_YLine, "H") = class_add Else MsgBox "該当する住所がありません" End If oldaddress = objFind.Row Set objFind = Worksheets(2).Range("D:D").FindNext(objFind) Loop End If i = i + 1 Loop End Sub

  • マクロ 【Find 】についての質問です

    Office 2003を使用しております。 マクロの「Find」について質問致します。 A 列の文字を検索するために、下記のような方法で 行いました。該当文字は複数あるものとして、検索された場合 検索行の次の行から再検索し、全て取り出したいと 考えております。  GG = 1 While GG < 100  Set GT = Range("A" & GG & ":A1000").Find("A"),LOOKAT:=True) If GT Is Nothing Then GoTo EN Else GG = Range("A" & GG & ":A1000").Row() End If Wend EN: 「Find」で検索しますと、該当文字が複数の場合、1個目は 検索スタート行は検索せずに、次の行から検索するのですが それ以降の行に該当文字がない場合は、検索スタート行から 検索することがわかりました。どうしてなのでしょうか? 上のマクロを実行致しますと、最後の該当文字を検索した場合 その行から再検索し、同じ行が検索されエンドレスになって しまいます。 宜しくお願い致します。

  • シェルのfindコマンドであるディレクトリ以外のファイルを検索

    ホームディレクトリにある.(例.dtや.atok)ディレクトを検索対象から外し尚且つ、*aa*のファイルを検索するにはどうしたら良いでしょうか? find . -type d -name .dt -prune -o -print | xargs grep "*aa*" でいろいろやってみましたができませんでした。 OS:HP-UX K-Shellです どうぞ宜しくお願いいたします。

  • findとcompressについて

    OSはSolarisを使用しています。Verは2.6か8だと思います。 通常compress命令を使用するとファイルを圧縮できるというのは わかるんです。findが検索するという命令ということも分かっています。 findで検索したファイルを圧縮する命令をUNIXシェルの中に記述したと します。その際にfindで指定したファイルを圧縮するプログラムを作成します。 その時に、指定した条件でファイルが見つからなかった場合に、 compress命令を実行するとプログラムが止まってしまうんです。 通常、UNIXのプロンプト!?よりcompressを実行した場合にで 指定したファイルが存在しない場合には ”ファイルもディレクトリもありません”。と表示されますよね。 圧縮したファイルを指定した場合にも確かメッセージが返ってきた と思います。 ここで質問したいのは3点あります。 1.シェルの中に記述した場合、ファイルが存在しない場合には処理が止まって  しまうのか?(指定したフォルダにファイルが何にも存在しない場合) 2.compressのオプション(-fなど)で、ファイルが存在しなかった場合の  回避はできるのか? 3.その他の方法にてプログラムが止まることの回避はできるのか?  もしくはプログラム上にエラーがあるのか? ぜひ回答よろしくお願いします。

  • Cannot find Temp Directory!って何でしょうか?

    ある会社のオンラインゲームをダウンロードして 実行すると必ず「Cannot find Temp Directory!」という言葉がでて エラーを起こしてしまいます。 色々と検索して探したのですが、なかなか該当するものが 見つかりませんでした。 これは一体どういう意味で、どういう解決方法をとれば ダウンロードができるのでしょうか?教えてください。

  • EXCEL VBAのFind について

    VBAで、特定の文字が入っているセル位置(結合セル)を取得したく、 シートのコード記述で --- Private Sub Worksheet_Change(ByVal Target As Range) Dim w_CelObj As Object Set w_CelObj = ActiveSheet.Cells.Find(What:="あああ", LookAt:=xlWhole, MatchByte:=False) MsgBox w_CelObj.Row MsgBox Cells.Find(What:="いいい").Row End Sub ----- と記述し、"aa"も"bb"もどちらの方法でも取得できました。 ですが、これを別のEXCELブック(既にシートがたくさんあり、コードもびっしり記述してあります)で同様のことを行おうとするとエラーになってしまいます。 ※新しいシートを作成し、そのシートにコードをコピーして試しました。 セルの結合を解除すると正常に取得できるのですが、結合セルだとFindされてきません。 調べてみましたが、「Cells.Find」ときちんとセル全体を指定していれば大丈夫のようで、同様の事例を検索できませんでした。 他に何を調べればよいでしょうか? ご協力よろしくお願いします。