find の日付検索の基準日時

find の "-mtime" などの日付検索の オプションは便利ですが コマンドの実行した時点が 基準日時(そこから24時間以内など)になるため ややこしかったりすることがあります。

ケースにもよりますが、 日付検索の 便利なオプションに
"-daystart" があります。

使い方は簡単。付けるだけ。

$ find . -daystart -mtime -3

"-daystart" は "-mtime" などより先に書きます。

このオプションで、日付検索の基準が00時00分になるため 現在時刻ではなく、日付単位で考えることができるようになります。

date コマンドで、日付の書式変換

小ネタ。

$ date -d "2017/3/4 1:15" +"%Y/%m/%d %H:%M"

2017/03/04 01:15

date コマンドに 日付文字列を与えて 出力の書式を指定すれば、数字の0詰めも簡単。

Linux 権限の後ろのドットについて

Redhat7.2を触っていて、おや?と思いました。

$ ls -l

-rw-r--r--. 1 root root 108  9月 25  2015 xxxxxxxxxxx

ls すると、権限の後ろにドットが付いていました。

調べてみると、そのドットは「SELinuxのセキュリティコンテキストが設定されているよ」とのこと。

[参考]
RHEL6で、ls -l 打った時に権限の後ろに".(ドット)"が付く、付かないは何を意味してる? - Qiita

ls に "-Z" 付けてみると、セキュリティコンテキストが表示されるようです。

-Z, --context Display security context so it fits on most
              displays.  Displays only mode, user, group,
              security context and file name.
$ ls -Z

-rw-r--r--. root root system_x:object_x:system_xxxx:s0 xxxxxxxxxxx

色々と知らないことが増えるなぁ、という話。

test コマンドの -v オプション

Bash シェルを実行するときに 環境変数の設定の有無を確認しているのですが 基本文字列なので、パッと見が分かり易い 次のような書き方をよくしていました。

if [ "${VAR_XXXXX}" = "" ]; then
   echo "環境変数が未設定"

値が必須だったので、良かったのですが 今回たまたま配列を使うことになり、 同じ書き方をすると未設定にマッチしてしまいました。

調べてみると最近は test コマンドに -v オプションがあり 変数の定義の有無をチェックできるとか。

if [ ! -v VAR_XXXXX ]; then
   echo "環境変数が未設定"

これでイケました。
まだ環境は選ぶようですが、見た目もわかりやすくて良いですね。

Google サイト内検索

Amazonアソシエイト