質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

解決済

shell スクリプトで 日付単位で mv させる方法について

EzrealTrueshot
EzrealTrueshot

総合スコア382

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

1回答

0評価

0クリップ

613閲覧

投稿2021/03/02 12:28

2019年01月01日14時30分05秒に取得したファイルがこのようにあります。
(ファイル名に日付が書かれています)

test_20190101143005.txt

このようなファイルが大量に下記のようにあります。(2年分くらい)
test_20190101143005.txt
test_20190101152015.txt
test_20190101161025.txt
test_20190101175035.txt
test_20190101184045.txt
test_20190101192055.txt
test_20190101203005.txt



test_20210101203005.txt

ここで、 2020年01月01日15時15分30秒 ~ 2020年07月14日15時30分45秒以前までのものを別ファイルへ mv させたいです。


現在の方法(手動)

mv test_20200101151530 別ファイルディレクトリ名 mv test_2020010116* 別ファイルディレクトリ名 mv test_2020010117* 別ファイルディレクトリ名 mv test_2020010118* 別ファイルディレクトリ名 ・ ・・ mv test_202002* 別ファイルディレクトリ名 mv test_202003* 別ファイルディレクトリ名 mv test_202004* 別ファイルディレクトリ名 mv test_202005* 別ファイルディレクトリ名 mv test_202006* 別ファイルディレクトリ名 mv test_2020070* 別ファイルディレクトリ名 mv test_20200710* 別ファイルディレクトリ名 mv test_20200711* 別ファイルディレクトリ名 mv test_20200712* 別ファイルディレクトリ名 mv test_20200713* 別ファイルディレクトリ名 ・ ・ ・ mv test_20200714153045*

このように、その月・日・時・秒ゴトのファイルすべてをアスタリスクで指定して mv させています。

このように自力で1つ1つやるのではなく、日付ソート的な技を用いて、任意の期間のファイルをワンライナーでごそっと移動させる方法がありましたら知りたいです。


しらべたところ、下記のような方法を見つけたのですが、タイムスタンプで基準をとっているようでしたので、今回のファイル名とは異なるため、無理でした。
https://www.searchman.info/tips/2950.html

ファイル名によってつけられた日付を任意の期間で、mvさせるいい方法をご存知の方いらっしゃいましたらご教示いただけませんでしょうか?

環境 Ubuntu18.04

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Daregada

2021/03/02 12:59 編集

> 2019年01月01日14時30分05秒に取得したファイルがこのようにあります。 (ファイル名に日付が書かれています) と > しらべたところ、下記のような方法を見つけたのですが、タイムスタンプで基準をとっているようでしたので、今回のファイル名とは異なるため、無理でした。 は矛盾していませんか? ファイル名に付けられた日時と、ファイルのタイムスタンプは大幅に異なるのですか? (たとえば、ファイル名に付けられた日時以降に編集を行なっているなど)
EzrealTrueshot

2021/03/02 13:10

はい、大体は合っているのですが、若干ことなっているものもあれば、大幅にことなっているものもあり、 きちんとソートされている状態ではありませんでした。 これにかんしては、記述漏れです。すみませんでした。
Daregada

2021/03/02 13:16

タイムスタンプ(修正日時)は異なっていても、ファイルの作成日時(ctime)はファイル名の日時と一致していませんか? もしそうであれば、findコマンドのnewerctオプションを2つ組み合わせて(awkを使わずに)処理できます。
KojiDoi

2021/03/02 13:38

この件についてはfindなど使うよりawkのほうが直接的・確実かつ簡単ではありませんかね。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。