• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linuxコマンド:ファイルを作成日ごとに分類)

Linuxコマンドでファイルを作成日ごとに分類する方法

このQ&Aのポイント
  • Linuxのコマンドを使用してファイルを作成日ごとに分類する方法を説明します。
  • フォルダAにあるファイルを作成日を参考にして、対応する日付のフォルダに移動する方法を解説します。
  • 作成日ごとに分類されたフォルダ内には、指定された拡張子(.MOV、.AVI)のファイルが保存されます。

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

  • ベストアンサー
回答No.1

ファイルの日付を取得するにはlsコマンドの「--full-time」オプションを使用します。 実行例 >ls --full-time -rw-rw-rw- 1 hoge hoge 69 2014-06-27 14:00:00.158349853 +0900 test.txt 上記表記は一例です。 6カラム目が日付(2014-06-27)ですから、現在のディレクトリにあるファイルの日付のみを取得するのであれば、以下のコマンドで取得できますね。 >ls --full-time ./*.mov |awk '{print $6}' これをリダイレクトでlist1.txtに落とします。 >ls --full-time ./ |awk '{print $6}' > list1.txt 日付重複の可能性がありますから、list1.txtから重複行を削除します。 sort list1.txt |uniq > sorted_list1.txt これでsorted_list1.txt ファイルには「カレントディレクトリにある全ての.movファイルの日付一覧(重複削除済)」が完成したことになります。 あとは「このファイルの内容を1行目から順次読み込む」「読み込んだパラメータ(日付情報)にてディレクトリ作成→ファイルムーブ」すれば良いでしょう。 順次読み込みの例(参考URL) http://www.sssg.org/blogs/hiro345/archives/6559.html http://sweng.web.fc2.com/ja/program/bash/read-each-line.html 一例ですが、 filename=./sorted_list1.txt cat ${filename} |while read line do mkdir $line mv ` ls --full-time | grep $line | awk '{print $9}'` ./$line/. done というような感じの記述でしょうか。 (上記記述は動作確認していませんので、あくまで参考に・・・) ls --full-time の表記はOS等によって異なりますから、awkの部分のカラムの位置等は実際に確認をしてから適宜変更する必要があります。 以上、ご参考まで。

tuktukrace
質問者

お礼

ありがとうございます。 awk で欲しい情報が取得できました。 助かります。 基礎をやらないとダメだと痛感し、ちょっと厚めの自習本を買いました。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

そもそも、Unix/Linuxだと、ファイルの作成日は記録されていませんので、文字通りには不可能です。 ファイルの最終更新日でいいのなら、 cd folderA for x in *.MOV *.AVI do if test -f "$x" then date=`date -r "$x" +%Y年%m月%d日` mkdir "$date" 2>/dev/null mv "$x" "$date" fi done ただし、簡単にするために日付は2桁です(2014年06月27日など)。 上位ゼロを削除するなら、 date=`date -r "$x" +%Y年%m月%d日 | sed -e s/年0/年/ -e s/月0/月/` です。

回答No.3

Ruby スクリプトで、手軽に書くと、こんな感じでしょうか。 第1引数にディレクトリを指定します。 http://pastebin.com/UjkHSNmV

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

実際にやってはいませんが…まぁ、目安として。 >1. ファイルの作成日を調べる statコマンドで-cオプション付で指定したらよいかと。 作成日がどれにあたるのかは不明ですが。 # ModifyなのかChangeなのか…。 http://linuxjm.sourceforge.jp/html/GNU_coreutils/man1/stat.1.html %W辺りですかねぇ…。 で、UNIX TIMEなどで取得してdataコマンドで書式化してください。 >2. その作成日のフォルダがあれば調べる(なければ新規作成する) testコマンドで有無の確認は可能かと。 # 「シェルスクリプト ディレクトリ 存在確認」辺りで検索すればそれなりに見つかるものと思われます。 ファイルの移動はmvコマンドで可能でしょう。 >3. 次のファイルをチェックする、以下ループ 普通にシェルスクリプトでループですかね。

関連するQ&A

専門家に質問してみよう