• ベストアンサー

findで複数の場所から検索

findで  /dir1 または /dir2 (さらには /dir3 も)からのファイルの検索はどのように書けばいいでしょうか? $ find "/dir1|/dir2" -name "nanashi" find: `/dir1|/dir2': そのようなファイルやディレクトリはありません $ find (/dir1|/dir2) -name "nanashi" bash: 予期しないトークン `/dir1' 周辺に構文エラーがあります よろしくお願いします。

noname#214079
noname#214079

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

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

いや普通に find /dir1 /dir2 /dir3 -name "nanashi"

noname#214079
質問者

お礼

ありがとうございます。 そんなに簡単なことだったんですね。 盲点でした。

関連するQ&A

  • 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の使い方

    ファイル名にある文字列を含むファイルの検索の仕方がわかりません.具体的にはsolという文字列を含むファイルの検索です.確かfind -name なんとかだったような気がするのですがよくわかりません.ディレクトリはいろいろで拡張子は不明です.よろしくお願いします.

  • 一行でdoループ

    debian wheezy で 一行でdoループをやろうとしたのですが、失敗します。 $ for i in {1..2} ; do ; pwd ; done bash: 予期しないトークン `;' 周辺に構文エラーがあります $ echo $SHELL /bin/bash $ echo $BASH_VERSION 4.2.37(1)-release なぜうまくいかないのでしょうか? 教えてください。 よろしくお願いします。

  • 【Linux】findコマンドの表示順

    linuxのfindコマンドについて質問です。 例えば、あるディレクトリの構成が以下の通りだったとします。 /dir1/aaa.txt /dir1/zzz.txt /dir1/dir2/bbb.txt このとき、 find *.txt | sort を行うと /dir1/aaa.txt /dir1/dir2/bbb.txt /dir1/zzz.txt という順に表示されます。 (文字としてはソートされていますが、ディレクトリ構造としては滅茶苦茶です。) しかし、ファイル名を表示する際は通常はディレクトリ毎に表示したいため、 1つ目の例の順のように表示される必要があります。 このとき、どのようにすればfindによる検索結果を1つ目のようにディレクトリ順に表示できるのでしょうか。 実際はディレクトリ構成が複雑で、ファイルもディレクトリも非常に多くあります。

  • シェル find 複数条件で

    hoge という名前のディレクトリ もしくは koge という名前のファイルを見つける find 文を教えて下さい。 hoge というディレクトリというだけの条件ならわかるのですが、 find ./ -type d -and -name hoge if文でいうところの条件をカッコで囲いたくなるような場合の書き方がわかりません。

  • Linuxでの検索はfindですか。

    教えてください。Linux初心者です。 どのディレクトリにあるのかわからない、名前も一部しかわからない、ファイルを検索するときのコマンドはなんでしょう。 manを調べるとfindかと思うんですが、すべてのディレクトリについて調べるとか、名前のワイルドカードの指定の仕方がわからないんです。 よろしくお願いします。

  • Cygwinのfind

    cygwinであるディレクトリ以下のパーミッションを全て777にしたいのですが、昔 findを使った覚えがあるのですが失念しました。 どのようにしたらよいのでしょうか? それからfind / -name [キーワード]でlinux?で検索できていた?のですが、cygwin上で同じことをするとエラーになります。 linuxとCygwinはコマンドが違うのでしょうか? Cygwinの良書もご存知の方、教えてください。

  • windows7のコマンドでファイルを検索したい

    windows7のコマンドでファイルを検索したいのですが、 調べてみると下記のようなコマンドで調べれるとの事でした。 dir /s /b *** しかしこれではカレントディレクトリからしか調べる事ができず不十分です。 全てのドライブからこのファイルを検索したいというコマンドを探しております。 unixでいえば find / -name *** のようなものです。 windows7のコマンドプロンプトではこのような事はできないのでしょうか。

  • UNIXの"find"コマンド同等のプログラム作成について

    お世話になっております。 現在UNIXの"-type f"オプションのついた"find"コマンドと同等のプログラムをC言語で作ろうとしています。 つまりディレクトリ内のファイル(サブディレクトリ内のファイル含む、ディレクトリは除外)を全てフルパスで表示するプログラムです。 現在下記の関数を作成したのですがうまく動いてくれません。 どなたかご教授いただけないでしょうか。 【問題】 プログラム内の(**)前後で"dir1"が変更される。 (**)前:"/ディレクトリA/" (**)後:"/ディレクトリA/ディレクトリA内のファイル1" 本当は"dir1"には:"/ディレクトリA/"のままであってほしいです。 "strcat"コマンドの仕様が影響しているのでしょうか。 int _find(char dir1[] , int k ,int l , int m ) { DIR *dir ; struct dirent *dp ; struct stat statbuf ; char txt[1000] ; if ( m == 0 ) l++ ; if ( (dir = opendir(dir1)) == NULL ){ printf("%s",dir1) ; perror("opendir") ; exit(1) ; } for( dp=readdir(dir) ; dp != NULL ; dp=readdir(dir) ){ if ( strcmp(dp->d_name,".") != 0 && strcmp(dp->d_name,"..") != 0 ){ /* ROOT_DIR名-にファイル名を付け加えて、フルパスにする */ strcpy( temp[k][l] , dir1) ; strcat( temp[k][l] , "/" ) ; strcat( temp[k][l] , dp->d_name ) ;  (**) stat( temp[k][l] , &statbuf ) ; if(S_ISDIR(statbuf.st_mode)){ l=_find(temp[k][l],k,l,1) ; }else{ sort[k][l]=temp[k][l] ; printf("temp[%d][%d]=%s\n",k,l,sort[k][l]); printf( "dir5=%s\n",dir1) ; l++ ; } } } closedir(dir) ; return l ; }

  • ファイルを検索して削除する

    /www 以下のディレクトリーに aaa.txt というファイルが存在する場合、 そのファイルが存在するディレクトリー内の全ての ***.txt を削除したいです。 find /www -name aaa.txt | xargs rm だと、aaa.txt だけの削除になります。 以下も考えましたが、これだと検索対象ディレクトリーが /www だけになります。 #!/bin/bash if test -e /www/aaa.txt then rm -f /www/*.txt fi どのように記述するとよいでしょうか。