• ベストアンサー

シェルの作成について

シェルの作成について 「TEST」というフォルダの中に 日付ごとに数千個のファイルがります。 これをファイルのタイムスタンプ(更新日)ごとに フォルダを作成しそこにファイルを移動する。 例:2月のときは28個フォルダができる 更新日:2010/02/01 00:00:00 ~23:59:59 ↓ 20100201ファルダ このようなことを実現できる シェルの作成したいのですが どのようにするとよろしいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

Linuxだとするとgnuのdateコマンドが使えるので割と楽。 yyyymmdd の形式の通常ファイルが存在しないと前提でいいですよね。 cd /どこそこ/TEST for i in * do if test -f "$i" #通常ファイル(ディレクトリ以外)なら then day=`date +%Y%m%d -r "$i"` #更新日をyyyymmdd形式で得る test -d $day || mkdir $day #その名前のディレクトリがなければ作る mv "$i" $day #移動 fi done

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

「シュルの作成」というと、bshとかcshとかコマンドプロンプトとかそのものを作るってことになっちゃいますが? おそらく、シェルスクリプトのことだと思います。 お使いのOS,使用したいシェルの種類を明記してください それが無いと、どんなコマンドが使えるかわかりません。

kaeru007
質問者

補足

すみません。 UNIXだとどうなりますか? シェルの種類ですが、シェルについて詳しくないので 実現できるシェルでいいです。 よろしくお願いします。

関連するQ&A

  • シェル ディレクトリ内検索について

    お世話になっております。 solarisでシェル作成に辺り教えてください。 あるディレクトリの新しいファイルから3つ目の ファイルを移動(mv)したいと考えているのですが 良い方法は無いでしょうか? 例 testディレクトリ内 ファイル.txt.051025 ファイル.txt.051024 ファイル.txt.051023  ←このファイルをmv処理 ファイル.txt.051022 ファイル.txt.051021 ファイル.txt.051020 ディレクトリ内のタイムスタンプで最も新しいファイルから3つ目を移動させたい場合は、どの様にしたら良いでしょうか?方法はあるのでしょうか? お願いします。

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------

  • シェル(Unix) ファイル更新を監視する方法がわからなくて困っています。

    ファイルが更新されているかシェルで監視したいのですが、どのようなシェルになるのでしょうか? たとえば、 Aファイルにはフルパスで記述している複数のファイルが記述してあり、その個々のファイルのファイルサイズやタイムスタンプを採取し、 Bファイルに出力させます。 再度、Aファイルを読み込みlsコマンド等の出力結果と、Bファイルの出力結果のファイルサイズやタイムスタンプを見比べて、相違があると メッセージを出力させます。 このような動作のシェルはどのように作るのでしょうか。

  • Windowsのファイル・フォルダのタイムスタンプ

    Windows10ですが、ファイルやフォルダを作成してもすぐに忘れてしまうことがあります。その理由としてあるディレクトリ(フォルダ)\Aのサブのディレクトリ\A\Bを変更したりしても元のフォルダ\Aのタイムスタンプが変更されないということがあるように思います。ディレクトリの深いところで何らかの更新をするとそれが上のディレクトリのタイムスタンプを更新するというような設定はないのでしょうか。 技術的に難しい感じはしないのですが、そうしない理由は何でしょうか。フォルダを作った日にちをいつまでもキープしておきたいということでしょうか。 また、フォルダをコピーするとコピーした日がスタンプされますね。移動はどうなるでしょうか(実験すればすぐですが)。タイムスタンプの考え方とはどのようなことになるでしょうか。また、タイムスタンプの付け方の設定変更はできないでしょうか。

  • タイムスタンプ更新時にシェルを実行する方法

    事前に、とあるシェルを準備して保存しておきます。 特定のファイルのタイムスタンプが更新されたら 即、その準備しておいたシェルを実行する方法はありますでしょうか? cronで実行するのではなく、そのファイルの更新された時のみ即、実行したいのです。 OSはCentOSになります。 よろしくお願いします。

  • シェルスクリプトで古いファイルの自動削除をするには?

    UNIXで以下の仕様を持つシェルスクリプトを作成しようと していますが、どうもうまくいきません。 どなたか、いい知恵を貸していただけないでしょうか? 目的: 特定のディレクトリ内にあるファイルについて、 システム日付より3日前のタイムスタンプを持つファイルを 削除する。 留意点: ・削除対象のファイルは複数存在する場合がある。 ・ファイルサイズは1件あたり 0byte-数百Mbyte となる  可能性がある。 ・ファイル名は不定。 ・スクリプトはBシェルまたはCシェルとする。 参考: ・現在使用しているOSについて  ls -l でのタイムスタンプにおける出力形式は以下のとおり  (デフォルト値?)  ・ 9月 28日 2000年    または   10月 24日 10時45分 知っている限りのコマンドを使っていろいろやってみたんですが、 結局ダメでした。 よろしくお願いします。

  • ファイルやフォルダのタイムスタンプ

    WindowsXPやVistaではファイルやフォルダに 作成日、更新日などのタイムスタンプがあります。 このタイムスタンプはどういう際に付与されるでしょうか? 通常の 新規作成で保存→更新 というのであれば作成日、更新日で理解できます。 ただ、ファイルのコピー、ファイルのダウンロード、圧縮、解凍時も 影響してそうです。 それに時々、作成日が更新日より若いといったことにも出くわします。 もちろん、操作するPCの時間が狂っていたからという理由もなくは ないと思いますが、自分の感覚ではそれ以外の理由が大きく感じています。私が考えている(私の感覚の)、タイムスタンプのつく予想と 大きくかけ離れている気がします。 どなたか詳しい方がいらっしゃいましたら、 "基本的なタイムスタンプの考え方"を教えていただければと思います。 よろしくお願いします。

  • unixのシェルで

    シェルを実行して、ファイルAの内容と、引数Aを連結してファイルBを作成したい場合にはどうしたら良いですか? 例> 実行するシェル : test.csh ファイルAの内容 : 123456 引数A : 9 作成したいファイルBの内容 : 1234569 123456と9の間にSPACEは入れないようにしたいのですが、どうしても入ってしまいます。 よろしくお願いします。

  • コピーした際のタイムスタンプの維持(圧縮ファイルvsフォルダ)

    http://oshiete1.goo.ne.jp/qa3341199.html でmp3データの管理について質問した者です。 圧縮せずにそのままアルバムごとにフォルダに入れて管理するということに決めたのですが、実際に運用しようとしたところ問題が生じました。それはタイムスタンプの維持です。 圧縮ファイルをコピーして移動しても、その中に入っているファイルのタイムスタンプは維持されますが、フォルダをコピーして移動した場合、その中に入っているファイルのタイムスタンプ(更新日時だけでなく、作成日時まで含め)が書き換えられてしまいます。 1.整理の都合上、どうしてもタイムスタンプを維持したいのですが、その場合はフリーソフトを使うか、圧縮ファイルにしないとやはり無理でしょうか? 2.何故フォルダをコピーした時、中身のファイルのタイムスタンプまで書き換えられてしまうのでしょうか? その利点・理由についてご存じの方、教えていただければ幸いです。「単なる仕様」なのかもしれませんが・・・ 3.PCの中でコピーするのではなく、PCから直接DVDにコピーした場合は、フォルダの中身のタイムスタンプは維持されますか? 試験的にやってみようかとも思いましたが、容量を考えるとあまりにももったいないので、事前にお教えいただければ幸いです。

  • シェルスクリプトの書き方

    お忙しい所失礼します。 以下の内容のようなことを行うにはどうすればいいでしょうか? (例) /home/testフォルダ直下に以下の3つのフォルダがあります。 ・sampleフォルダ ・sample1111フォルダ ・sample2222フォルダ このファイルをそれぞれ別のディレクトリに移動させます。 ・sampleフォルダ→/usr/testフォルダに移動 ・sample1111フォルダ→/usr/test1111フォルダに移動 ・sample2222フォルダ→/usr/test2222フォルダに移動 これが通常なのですが、sample1111と2222が無いときはコピーを実行しないスクリプトを書きたいのですがどう書けばいいのでしょうか? 手動でやる分には楽なんですけど、100個位フォルダがあり…日によって50の時もあれば100の時もあって…自動化したいのです… もし参考になるサイトなどあれば教えてください。 よろしくお願い致します。

専門家に質問してみよう