• 締切済み

指定ディレクトリ名称が先頭から部分一致(全て含まれる)するものを抽出し

指定ディレクトリ名称が先頭から部分一致(全て含まれる)するものを抽出して、名称が長いほうのディレクトリを削除するシェルスクリプトを作りたいですけど、まったく手をつけない状態です。ヒントでもいいんでアドバイスお願いします。指定ディレクトリ下のディレクトリに対しても再帰的に行い場合は? /tmp/aaaabb /tmp/aaaa /tmp/aaaa/bb /tmp/aaaa/bbdd がある時、下のディレクトリが削除する。 /tmp/aaaabb /tmp/aaaa/bbdd

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どのような処理を期待しているのかわからないんですけど.... 「指定ディレクトリ名称」ってありますけど, 下の例には「指定ディレクトリ名称」が与えられてないですよね. また, これに加えて /tmp/aaaaxx がある場合, あるいは挙げられた例で /tmp/aaaabb がない場合などにどのような処理をすればいいのかわかりません. とにかく, あなたの望む処理を*言葉で*詳細に書いてください. 1例だけ挙げられても理解できません.

win1010
質問者

補足

上に加えて/tmp/aaaaxxがある場合 /tmp/aaaabbと/tmp/aaaaxx両方削除します。 /tmp/aaaabb と/tmp/aaaaxxがない場合 /tmp/aaaaはそのまま 例えシェルの名前がdelDir.shとしたら ./delDir.sh path 引数pathは指定ディレクトリ    /tmp/aaaa /tmp/aaaabb /tmp/aaaaxx /tmp/bb/aaxx /tmp/bb/aa /tmp/bb/cc があるとして、 ./delDir.sh /tmp /tmp/aaaabb /tmp/aaaaxx /tmp/bb/aaxx が削除されます。

関連するQ&A

  • ある階層のすべてのディレクトリ内にディレクトリ作成

    例えば /home/hoge/aaaa/ /home/hoge/bbbb/ /home/hoge/cccc/ のようなディレクトリ構成で、 /home/hoge/aaaa/1/ /home/hoge/bbbb/1/ /home/hoge/cccc/1/ のように新たなディレクトリを作成したいと思い、 mkdir /home/hoge/*/1 としたところ、 mkdir: cannot create directory `/home/hoge/*/1': No such file or directory と怒られてしまいました。 こういった処理をしたい場合は、シェルスクリプトを組むしかないのでしょうか? 当方、シェルスクリプトには明るくなく学習時間を考えると、30ディレクトリ程度なので手作業でやった方が早いと思うので、そのようにしたいと思ったのですが、もしコマンドラインでうまいこと記述できる方法をご存知でしたら、ご教授願いたいです。 厚かましいですが、もし容易にシェルスクリプトで記述できるならコードを書いてくださると助かります。

  • /なしのディレクトリ指定について

    皆様、ちょっと質問です。Linux+apache1.3.12を使ってサイト公開しているんですが、DocumentRoot が /home/httpd/htmlで、その下に例えばsefirosというディレクトリを作ったとします。そのディレクトリにindex.htmlをおき、仮に私のサイトが"www.AAAA.com"だったとして、ブラウザからwww.AAAA.com/sefiros/と指定するのと、www.AAAA.com/sefirosと指定(/の有り無し)するのと何か違いがあるのでしょうか?ちなみに今後者(/無し)の方がアクセス出来ない状態にあります。

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • シェルスクリプト勉強をしています。

    シェルスクリプト勉強をしています。 シェルスクリプトの条件で指定のディレクトリがAAAというディレクトリが1つしかない場合はスクリプト1を実行し終了させる。 AAAAというディレクトリも含めて複数ある場合(BBBというディレクトリのみでも同様)は別のスクリプト2を実行させる。 例として /home/hoge配下にTargetというディレクトリのみの場合は、スクリプトXを実行した後に終了させる。 Targetディクトリや他のディレクトリもある場合はスクリプトYを実行する。 Targetディレクトリ以外のディレクトリのみだけの場合もスクリプトYを実行する。 Targetディレクトリのみの場合というスクリプトの書き方がわからず… どなたか教えていただけると助かります。 よろしくお願いします

  • dirに追加されるファイルを別のdirにコピーする

    質問させて頂きます。 OSはFreeBSDです。 あるディレクトリ(以下、dir1)にファイルが作られていきます。ファイルは不定期に作られ、また不定期に削除されていきます。このdir1にファイルが作られたら、別のディレクトリ(以下、dir2)にコピーしていきたいのです。つまり削除されるファイルを別のところにためておきたいのですが、どのような方法があるのかわかりません。 勉強していますが、シェルスクリプトも殆ど書いたことがないので、方法やコマンドなどが想像出来ません。ヒントだけでもいいので教えていただけませんか?

  • VBScriptで削除処理

    初めまして。 VBScriptを今回初めて使用しながらスクリプトを作成しようとしています。 〔質問〕 以下のような削除処理をVBScriptにて実施したいのですが、どのような構文を書けばいいのでしょうか? ご教授お願いします。 以下、例を挙げ記述致します。 (例)処理日が2008/3/22の場合。 「AAAA」ディレクトリ配下の以下のログファイルを二日前までの日付になっているログファイルのみ残し、あとは全て削除するという処理をしたい。 AAAAディレクトリの配下 ・aa080319.log→削除 ・aa080320.log→削除 ・aa080321.log→残す ・aa080322.log→残す 上記例を用いますが、自分で考えた処理フローとしまして、 (1)「AAAA」ディレクトリ配下のファイル一覧をテキストファイルに書き込む。 (2)「(1)」で作成したテキストファイルを読み込み、「2008322」と「2008321」に一致しないログファイルを削除。 以上、宜しくお願いします。

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • Excelにて指定する2つの合計を出したい

    うまくタイトル名をつけれなかったのですが… |名称1|名称2|数値| |AAAA|AABB|1000| |AAAA|BBBB|1000| |AAAA|BBBB|3000| |CCCC|AABB|2000| |CCCC|BBBB|3000| というデータがあったとき |名称1設定|名称2設定|数値合計| という別セルを作成し、名称1、名称2が一致した合計結果を出したい、と思っています。 ここで、名称1設定、名称2設定は複数であり、それらの結果それぞれに対して合計を出したいと考えています。 たとえば |名称1設定|名称2設定|数値合計| |AAAA|   |5000| |CCCC|   |5000| |AAAA|BBBB|4000| |   |BBBB|7000| という数値合計結果を出す、というような。 SUMIF関数で行うにも、指定する条件が2つ(名称1、名称2)とあるのでうまくいかず、DSUMするにもどうもうまくいかずで困っています。 ACCESSを使用するのがいいのかもしれませんが、EXCELでこのようなことができないでしょうか。 詳しい方いましたらよろしくお願いします。

  • Linux シェルスクリプト

    シェルスクリプトを作る際に、汎用スクリプトを作るのが上手くいきません。 例として以下の2つのシェルの作成例を教えてください。 1、スクリプト名をrei1として platex T1.tex dvipdfmx T1.dvi xdvi T1.dvi & wc -c T1.tex T1.dvi T1.pdf ではT1.tex専用なので これを $ ./rei1.sh ファイル名 と打ちこむことでどのファイルにでも適応できるようにする 2、スクリプト名をrei2.shとして 後から指定した文字列を含む (例えばaak ak aab aba naaの5つがあった時、「aa」と指定することでaak,aab,naaの3つを選ぶ) ファイルを選び出し、それを指定したディレクトリ(このディレクトリも可能なら後から指定したい) に移動する。という動作をするシェルスクリプト。

  • Bシェルで、ファイル内にある文字列があるかどうかチェックする方法

    Bシェルプログラムで、指定したディレクトリ内の全てのファイル内に、ある文字列があった場合、そのファイルを別のあるディレクトリに移動させる。というプログラムを作成したいのです。 指定したディレクトリ内のファイル名を取るとこまではわかったのですが、文字列を検索する術がよくわかりません。 ヒントでも何でも教えてください。 よろしくおねがいします。

専門家に質問してみよう