ファイルの変更日を更新したい
検索猿人な私は「bash
ファイル
編集日
更新
」を Qiita 記事に絞ってググっても、タイトルでドンピシャのものがヒットしなかったので、忘れん坊な未来の自分の備忘録として。
TL;DR
まいっちんぐマチコ先生の答え
touch
1 コマンドを使う。Unix/Linux のtouch
コマンドで、ファイルの「最終アクセス時刻」と「最終変更時刻」を現在のタイムスタンプに変えることでファイルの変更日を更新する。空のファイルを作るだけではないのだよ。
# !/usr/bin/env bash
PATH_FILE='/Users/me/Documents/data_md/something.md'
if [ -e $PATH_FILE ]; then
# ファイルの変更日を更新する。
touch $PATH_FILE
fi
動作確認環境
- macOS Mojave(OSX 10.14.2)
- bash(GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18))
TS;DR
記憶を時間軸で管理するも I know ランダムアクセスメモリー
どうやら私の脳みそ、というか記憶はトコロテンらしく押し出し式で古い記憶が消されるっぽいのです。衝撃にも弱く、何かとすぐに飛んじゃう FIFO2 なメモリーなのです。
そのため、記憶を各々のテキストに書いて、一元的(特定のディレクトリ)に保存しておいて検索をかけます。まぁ、それは普通のことで Evernote3 などで同じことをされている人はたくさんいると思います。
次に、ストックしたファイル置き場(ディレクトリやフォルダ)に検索をかけてからファイルの編集日でソートをかけることがよくあります。つまり、Mac の Finder で言うところの「表示順序を、変更日順に並び替えた状態」です。
その際、該当するファイルを見つけたら、そのまま上書き保存するという、忘れん坊の経験則的な手癖がついてしまっています。
と言うのも、これ(上書き+更新日でソート)により、ファイルが記憶の時間軸に並ぶので、頻度や重要度の客観的な認知ができるからです。上位に表示されるものは忘れる頻度の高いもの、もしくは覚えられないもの。そして下位に表示されるものは思い出せなくて当然なくらい頻度の低いものか、たまに忘れる系のもの、と言った塩梅です。
Touch down the Markdown
これまで Kobito4、GMail の宛先未指定の一時保存メール、Google Drive のメモ、macOS や iOS の「メモ」アプリデータ、Evernote、etc...etc... といった複数環境で各種メモを取っていました。いままでは各々のエディタで開いては保存をしていたのですが、年始に平成最後のフォルダの大掃除を行いました。
OS を HightSierra から Mojave に入れ替える際に、これらのメモを Markdown5 に直して、一箇所に保存し、そこから各種アプリに同期させるようにしたのです。(頑張った)
これによりキーボードから手を離す頻度が減り、ターミナル操作が増えました。
すると、整頓して早々に Finder やアプリからデータを探すのが逆に億劫になってきました。
ググる時と同じ感覚で、コマンドでファイル内の検索を求めるコマンドーな身体になってしまったのです。
その際のファイル内の文字列検索には Spotlight6 の mdfind
7 コマンドでも良いのですが、特定ディレクトリ下にあるファイルの文字列検索の場合には「Rip Grep
」 を使った方が速い8ため、rg
コマンドを使っています。
$ # 環境変数にデータの保存先のパスを設定しています
$ echo $PATH_DIR_MEMO
/Volumes/HDD_EXT/Data_Backup/Memo/
$
$ # ディレクトリ移動
$ cd $PATH_DIR_MEMO
$
$ # 文字列「アカウント情報」を検索
$ rg アカウント情報
zzzzzzzzzzzzzzzzzzzzzzz.md
5:Microsoft アカウント情報一覧
10: - Microsoft Developer アカウント情報
xxxxxxxxxxxxxxxxxxxxxxx.md
3:## Qiita 登録アカウント情報
yyyyyyyyyyyyyyyyyyyyyyy.md
1:- 登録アカウント情報
12:GitHub にログイン後、アカウント情報を確認。
$
$ # 該当情報(ファイル)を見つけたので表示
$ cat yyyyyyyyyyyyyyyyyyyyyyy.md
(略)
記憶のカンニングをしているだけなのに、なんか良い感じです。
$ rg --sortr modified アカウント情報
xxxxxxxxxxxxxxxxxxxxxxx.md
3:## Qiita 登録アカウント情報
yyyyyyyyyyyyyyyyyyyyyyy.md
1:- 登録アカウント情報
12:GitHub にログイン後、アカウント情報を確認。
zzzzzzzzzzzzzzzzzzzzzzz.md
5:Microsoft アカウント情報一覧
10: - Microsoft Developer アカウント情報
そこで、touch
で更新できることを知り、概ね以下のような操作で更新しています。
$ # 環境変数にデータの保存先のパスを設定しています
$ echo $PATH_DIR_DATA
/Volumes/HDD_EXT/Data_Backup/Memo/
$
$ # 文字列「アカウント情報」を検索+検索先のパス指定付き
$ rg --sortr modified アカウント情報 $PATH_DIR_DATA
/Volumes/HDD_EXT/Data_Backup/Memo/xxxxxxxxxxxxxxxxxxxxxxx.md
3:## Qiita 登録アカウント情報
/Volumes/HDD_EXT/Data_Backup/Memo/yyyyyyyyyyyyyyyyyyyyyyy.md
1:- 登録アカウント情報
12:GitHub にログイン後、アカウント情報を確認。
/Volumes/HDD_EXT/Data_Backup/Memo/zzzzzzzzzzzzzzzzzzzzzzz.md
5:Microsoft アカウント情報一覧
10: - Microsoft Developer アカウント情報
$
$ # 確認
$ cat /Volumes/HDD_EXT/Data_Backup/Memo/zzzzzzzzzzzzzzzzzzzzzzz.md
(略)
$
$ # 更新
$ touch /Volumes/HDD_EXT/Data_Backup/Memo/zzzzzzzzzzzzzzzzzzzzzzz.md
実際には、上記一連の作業はパスの通ったシェルスクリプト経由で簡略化していますが、そのスクリプトは公開できるほど作り込んでいないのと、本当に使い勝手が良いのかまだ分からないので、良い感じであれば別記事で Qiita にあげたいと思います。
-
【
touch
コマンドとは】「touch (UNIX)」@ Wikipeida ↩ -
【FIFO とは】先入れ先出し。つまり、先に入ったものから先に出て行くトコロテンな状態の IT 用語。「FIFO」@ Wikipedia ↩
-
【Kobito とは】今は亡き Qiita 純正の Markdown エディタ。「Kobito」@ Qiita.com ↩
-
【Markdown とは】Qiita や GitHub などで採用されているテキストの記法。拡張子は一般的に「.md」。メモを取るときに便利な記法で、その記法で書いておくとビューアーで良い感じで表示される。ビューアーがなくても読みやすいので、覚えておくと良い。「Markdown」@ Wikipedia ↩
-
【Spotlight とは】Mac の検索機能。Spotlight の検索対象に(SQLite3 で DB 化)されたものは検索が早い。 「Spotlight」@ Wikipedia ↩
-
【
mdfind
コマンドとは】find
コマンドの Mac 専用拡張コマンドみたいなもの。Spotlight のコマンド版。mdfind
コマンドの Qiita 記事検索 @ Google ↩ -
【
rg
コマンドとは】RipGrep は爆速の文字列検索コマンド。「RigGrepとは」| 爆速 grep「ripgrep」をラズパイにインストールする【実測値あり】 @ Qiita ↩