ベストアンサー 複数あるファイルの中から、あいうという文字が入っているファイルを検索するバッチを教えてください。 2009/11/15 19:45 dir /s とfindとパイプでしょうか?またシェルスクリプトならどうなるでしょうか 補足お返事ありがとうございます。やってみましたが、何もおきませんでした。 みんなの回答 (3) 専門家の回答 質問者が選んだベストアンサー ベストアンサー bin-chan ベストアンサー率33% (1403/4213) 2009/11/15 23:44 回答No.2 EXCELはバイナリファイルですから、FINDでは不可でしょう。 バッチファイルでは無くなりますが以下の方法はいかがしょうか? エクスプローラでF3キー押下すると「検索」できるのはご存知でしょうか? (もちろん、右クリックして「検索」でも可) ここで「ファイルに含まれる単語または句」に「あいう」を指定する。 「ファイル名のすべてまたは一部」は、無指定でも可。 (無指定はすべてのファイルを指定したものとされる) 検索対象をテキストとEXCELに限定したいなら[*.txt; *.XLS]と入力。([ ]は説明のためで、入力不要) 通常の検索よりも時間がかかるので、日付で期間指定するとか、対象フォルダ指定しないとシビレます。 質問者 お礼 2009/11/16 15:36 できました。ありがとうございます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (2) soaikats ベストアンサー率58% (14/24) 2009/11/15 23:44 回答No.3 バッチ以外でよければ。 調べたいフォルダを右クリックして「検索」ボタンをクリック、 左側の「ファイルに含まれる単語または句」に "あいう"を入力して「検索」ボタンをクリック。 それとも、これと同じことをバッチでやりたいという 意味だったのでしょうか? 質問者 お礼 2009/11/16 15:39 ありがとうございます。たしかにGUIだとできます。かなりおそいのでDOSでできればなーと思ったしだいです。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 bin-chan ベストアンサー率33% (1403/4213) 2009/11/15 19:54 回答No.1 「あいう」は先頭でも中間でも末尾でも良いのでしょうか? コマンドプロンプトで、対象とするドライブに移動して、 dir /s "*あいう*" [Enter] パス名の取得だけでよければ dir /s /b "*あいう*" [Enter] 質問者 お礼 2009/11/15 20:42 説明が悪くてすいません。ファイル名ではなくテキストやEXCELファイルの中にあいうという文字があるファイルです。 findとdir/sを組み合わせたりで、出来ないでしょうか? またEXCELなどのバイナリファイルは無理なのでしょうか? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連するQ&A findで複数の場所から検索 findで /dir1 または /dir2 (さらには /dir3 も)からのファイルの検索はどのように書けばいいでしょうか? $ find "/dir1|/dir2" -name "nanashi" find: `/dir1|/dir2': そのようなファイルやディレクトリはありません $ find (/dir1|/dir2) -name "nanashi" bash: 予期しないトークン `/dir1' 周辺に構文エラーがあります よろしくお願いします。 MsDosでファイル名とファイル内の文字列の検索 リナックスコマンドでいうところの find -name xxxx -exec grep $test {} \;の処理を コマンドプロンプトにて、利用したいと考えています。 dir xxxx /s /b | find "$test" こういった記述で出来るのではないかと考えたのですが。 findが"ファイル名"を検索するためファイルの中身を検索してくれません。 何かいい方法は御座いませんか? また、dirで取得したパスを配列に入れて、foreachでファイルの中身を検索し続けるということは可能でしょうか? よろしくお願いいたします。 Win2000 バッチファイルについて こんにちは、 Win2000の環境で下記のバッチがうまく動作できません、”FIND:パラメータ書式が間違います”というエラーが出ています、ほかの2003,2008ではそういう現象が出ていません。 なぜでしょうか? そこの”^|”の”^”を消したとしても無理のようです。 ■簡単にバッチファイルが存在する領域の使用容量を算出するバッチファイルです。(一時ファイルの生成は利用しない、Findコマンドだけを使うという前提で) ソース: @echo off for /F "tokens=3" %%s in ('dir /s/-c ^| find "個のファイル"') do Set s=%%s echo %s% 分かって頂ければご教授ください。 誠にありがとうございます~~。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれ Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれば良いのでしょうか? $ alias a="ls $1 -a" $ a dir . .. ls_nara_ok $ alias a="find $1 -type d" $ a dir find: pathes must precede expression: a lsではうまく行くのに、findではエラーとなってしまいます。 どうすればスクリプト(エイリアス)内のfindに引数を渡せるのでしょうか? バッチファイルでディレクトリ の表示をしたいのですが dir/s>gomi.txt ではフィル名が表示されフルパスでファイルを表示してくれません 1行にファイルがプルパスで表示される形式でファイルリストを表示させるにはどうしたら良いのでしょうか? Linuxで言うところの find /root のときに表示される様にです 特定文字列を除外してcpする方法 こんにちは。必要なときのみシェル、ごくたまにシェルスクリプトを利用する程度なため、非常に初歩的なことだとは思うのですが、すっかりどつぼにはまってしまい、調べてもらちがあかないので、質問させてください。 cp コマンドで、特定の文字列を「含まない」ファイルすべてを指定してコピーするにはどうしたらいいでしょうか。 cpにオプションがなかなか見つからないので findと組み合わせようと思ったのですがこれでも思うようにいかず、苦闘の末find, grepを総動員してcp `find /dir * | grep -vl 'mojiretsu'` などとやってみましたが引数が多すぎると怒られて終わり(泣)。 よい方法をぜひご伝授ください。要するにコピーが目的ですので別のコマンドでもかまいません。 UNIXのシェルスクリプト UNIXのシェルスクリプトで以下のようなことをやりたいのですがいい方法を教えて下さい。 ファイルの中にある文字列があります。 たとえば”CURREND_DIR” この文字列をシェルスクリプトでカレントのディレクトリパスに変換したいのですが いい方法が思いつきません。 set dir_data = ‘pwd‘ sed -e ’s/CURRENT_DIR/$dir_data’ ファイル名 でできるかなと思ったのですが、”CURRENT_DIR”が”$dir_data”に置換されてしまいます。 さらにdirパスが”/”で区切られていることも問題のようです。 findのexecdir内でパイプを使う 現在シェルスクリプトを書いています。findの-execdirの中で次のコマンドを実行したいのですが、パイプをうまく取り扱ってもらうにはどうすればよろしいでしょうか。 tail -n +$[`sed -n "/^###END_OF_SCRIPT###$/{=;q;}" $0` + 1] $0 | tar xf - よろしくお願いします。 find結果で文字列検索? RedHatLinux7.2です。 シェルコマンドで複数のテキストファイルからある文字列を含むファイルだけリストアップしたいのですが、文字列検索の対象となるテキストファイルが色々なディレクトリにまたがっている場合はどうやってやればよいでしょうか? 多分findで抽出したファイルパスをgrepに渡せばいいんでしょうけどパイプとか?がまだ不勉強ですぐにわかりません。 初歩的なことだと思いますがよろしくお願いします。 Bashシェルスクリプトの書き方 Bashシェルスクリプトの書き方 ↓のx.shはどこが間違っているのでしょうか? $ cat x.sh #!/bin/bash function x() { local dir if $1; then dir=$1 else dir="." fi `find $dir -type d` } ↓こうなります $ source x.sh $ x dir dir: command not found bash: .: ./dir: はディレクトリです Mac OS X でバッチファイルのようなものは? Windows では、デフォルトの状態で *.bat というファイル名で保存し、ファイルを開くと、そのファイルに書かれた内容が順番に実行される仕組みがあります。 では、Macで同じようなことをしようとした場合どうすればよいですか。 bash シェルスクリプト、というものがあることは知っています。 より具体的に説明します。 アプリケーションを起動するためのテキストを、ファイルに書いておき、Finderからそれを開く事で、記述した通りにアプリケーションが起動するようにしたいです。 Windowsにおいて同じディレクトリに2つのファイルがあります 1) setdir.bat set dir1=C:\d1 1終わり) 2) exec.bat call setdir.bat set apppath=dir2\dir3\dir4 set execfile=app.exe set param=-foo -bar start "" "%dir1%\%apppath%\%execfile%" %param% 2終わり) これでエクスプローラで exec.bat を開くと、app.exe が実行されます。 MacのFinderでファイルをダブルクリックしたときに、同じように何かアプリケーションを実行するようにしたいです。Tarminalを起動してCUIでスクリプトを実行する方法ではありません。 ファイルは2つなければならず、一度変数に代入してから、変数を使って最終的に起動するという点は変えないでください。 シェルススクリプト内のパス指定について プログラムを実行するシェルスクリプト内に以下のように絶対パスで環境変数の設定用のシェルスクリプトが絶対パスで書かれているのですが、この場合だと環境が変わるたびにシェルスクリプト内のパスを書き換えなければなりません。 /dir1/dir2/dir3/setenv.sh 相対パスにすれば書き換える必要はなくなるのですが、お作法上は相対パスで書くことは問題ない(良いと)されているのでしょうか? ../../dir/setenv.sh AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム シェルスクリプトの「{} \;」部分の意味は?グーグル等でも検索できない状態です。 以下のようなシェルスクリプトを見かけますが、「{} \;」部分の意味が分かりません。記号なので、グーグル等でも検索できない状態です。 #二日前のファイルを削除 find /backup -mtime +1 -maxdepth 1 -name '*.zip' -exec rm -f {} \; 上記のようなシェルスクリプトの「{} \;」部分は、どのような意味があるのでしょうか?特にプログラムと違いシェルスクリプトは;(コロン)で終わる必要がないのに、終わっているのが不思議です。 よろしくお願いします。 バッチファイルでの%を含むファイル名の取得 以下はEドライブを走査してフォルダごとのjpgやpngなどのファイルの数を全て表示するバッチ処理ですが。基本的に上手く動きますが%を含むファイル名、フォルダ名に当たると上手く動きません。どうしたらいいでしょうか?”ファイル名、フォルダ名に%を使うな”という回答以外でお願いします。 @echo off pushd E:\ for /f "delims=" %%j in ('dir /b /s /a:d') do call :sub "%%j" exit /b :sub echo /////////////////////////////////////////////////////////////////////////// for /f "delims=" %%x in ('dir /b %1 ^| find /c ".jpg"') do call :jpg %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".JPG"') do call :jpg2 %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".png"') do call :png %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".bmp"') do call :bmp %%x echo %1 echo jpg %jpg_c% echo png %png_c% echo bmp %bmp_c% echo JPG %jpg2_c% goto :EOF :jpg set jpg_c=%1 :echo %1 goto:EOF :jpg2 set jpg2_c=%1 :echo %1 goto:EOF :png set png_c=%1 :echo %1 goto:EOF :bmp set bmp_c=%1 :echo %1 goto:EOF :all set all_c=%1 :echo %1 goto:EOF Knoppix上のバッチファイル Knoppix上で、Windows上でいうところのバッチファイルを作りたいです。シェルスクリプトというそうですが、ネット情報を参考にしてテキストファイルに命令を書き込み、そして「実行」属性も付けました。 しかし、実行できません。エラーの意味も良くわかりません。 どうすれば良いのでしょうか。 windows7のコマンドでファイルを検索したい windows7のコマンドでファイルを検索したいのですが、 調べてみると下記のようなコマンドで調べれるとの事でした。 dir /s /b *** しかしこれではカレントディレクトリからしか調べる事ができず不十分です。 全てのドライブからこのファイルを検索したいというコマンドを探しております。 unixでいえば find / -name *** のようなものです。 windows7のコマンドプロンプトではこのような事はできないのでしょうか。 下階層のファイルを含めての最新ファイルの検索 UNIXで下階層のdirにあるファイルも含めて最新のタイムスタンプのファイルを探したいのですがいい方法はないでしょうか?できればスクリプトを組まずにできればありがたいのですが、無理ならスクリプトを使用してでもできる方法を教えていただけると助かります。 dirに追加されるファイルを別のdirにコピーする 質問させて頂きます。 OSはFreeBSDです。 あるディレクトリ(以下、dir1)にファイルが作られていきます。ファイルは不定期に作られ、また不定期に削除されていきます。このdir1にファイルが作られたら、別のディレクトリ(以下、dir2)にコピーしていきたいのです。つまり削除されるファイルを別のところにためておきたいのですが、どのような方法があるのかわかりません。 勉強していますが、シェルスクリプトも殆ど書いたことがないので、方法やコマンドなどが想像出来ません。ヒントだけでもいいので教えていただけませんか? 【シェルスクリプト】ファイルを検索しヒット… シェルスクリプトの書き方で躓いたのでご教授ください。 「backup-日付」というファイル名のバックアップを毎日とっています。 これを30日たったら1つ追加するごとに一番古いファイルを1つ消すようにスクリプトを組みたいのですが、どのような組み方がありますか? 宜しくお願いします。 バッチファイルで<&4と4<%1は何をしているの? MS-DOSバッチファイルで、 コマンド1 > ファイル名 2>&1 というような書き方をして、 標準出力だけでなくエラー出力もファイルに書き出すことが できることは理解しています。 そして、数値は0,1,2の3つがあり、各々、 ハンドルSTDIN(キーボード入力) ハンドルSTDOUT(コマンドプロンプトウィンドウへの出力) ハンドルSTDERR(コマンドプロンプトウィンドウへのエラーの出力) であることも理解しています。 しかし、 この数値が3以上で使用されているコードを見かけました。 例えば、 ネット上に以下のコードがあったのですが、 SET /P s1= >NUL <&4 の「>NUL」の部分は、 メッセージが画面に表示されないようにしていると思いますが、 「&4」の部分と 最後の行の4<%1の「4」の部分は何をしているのでしょうか。 実際に動かしてみると、 %1(file1.txt)ファイルの各行が、1行ずつ、 4という名前の変数(ハンドル?)に順番に入っていき、 &4の部分でそれを取り出して、 環境変数s1に代入(セット)しているように見えます。 私は、バッチファイルで、 このような(3以上の数値を使った)使用法を いままでに見たことがありませんでした。 このような使い方を詳しく解説しているサイト がありましたら教えてください。 よろしくお願いします。(Windows10) ---Paste.CMD--------------------------------- @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION (FOR /F %%0 IN ('FIND /C /V ""') DO SET a1=%%0) <%1 (FOR /F %%0 IN ('FIND /C /V ""') DO SET a2=%%0) <%2 IF %a1% LSS %a2% SET /A a1=a2 (FOR /L %%k IN (1,1,%a1%) DO ( SET s1= SET s2= SET /P s1= >NUL <&4 SET /P s2= >NUL <&5 ECHO:!s1! !s2! ) ) 4<%1 5<%2 ------------------------------------ 使用例 paste file1.txt file2.txt ------------------------------------ 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
できました。ありがとうございます。