ファイルがx回以上前に作成されたかどうかをlinux bashでチェックしたい。
ファイルの名前がtext.txtで、時間が2時間だとします。
if [ what? ]
then
echo "old enough"
fi
変更時のみ
if test `find "text.txt" -mmin +120`
then
echo old enough
fi
または、1行で同じ:
#!/bin/bash
find text.txt -mmin +120 -exec echo "old enough" \;
変更には-cmin
を、アクセス時間には-amin
を使用できます。他の人が指摘したように、作成時間を追跡できるとは思わない。
私はいつもdate -r /the/file +%s
年齢を確認します。
touch --date '2015-10-10 9:55' /tmp/file
任意の日付/時刻に非常にきめ細かい時間を取得します。
stat
を使用してファイルの最終変更日を把握し、date
を使用して現在の時間とbashismの自由な使用を把握し、ファイルに基づいて必要なテストを実行できます。最終変更時間1。
if [ "$(( $(date +"%s") - $(stat -c "%Y" $somefile) ))" -gt "7200" ]; then
echo "$somefile is older then 2 hours"
fi
コードはfind
アプローチよりも少し読みにくくなりますが、find
を実行して既に「見つけた」ファイルを見るよりも良いアプローチだと思います。また、日付の操作は楽しいです;-)
%Z
の代わりに %Y
以下の「変更時間」を取得します。[更新]
Macユーザーの場合は、stat -f "%m" $somefile
上記のLinux固有の構文の代わりに
作成時間は保存されません。
格納されるのは3つのタイムスタンプです(通常、特定のファイルシステムで、または特定のファイルシステムオプションでオフにできます)。
ファイルへの「変更」は、アクセス許可の変更、名前の変更などとしてカウントされます。変更はコンテンツのみです。
Ctimeは技術的にの作成時間ではありませんが、非常に頻繁に作成されます。
Ctimeはファイルの内容を変更しても影響を受けないため、通常はファイルが作成されたときにのみ更新されます。そして、はい-私はあなたのすべての叫び声を聞くことができます-アクセス許可または所有権を変更した場合も更新されます...しかし、一般的にそれは一度、通常はそこにファイルを置くと同時に行われるものです。
個人的に私は常にすべてにmtimeを使用しており、それがあなたが望むものだと思います。しかし、とにかく...ここに、使いやすい関数でのGussの「魅力的でない」bashの再ハッシュがあります。
#!/ bin/bash function age(){ local filename = $ 1 local changed = `stat -c%Y" $ filename "` local now = `date +%s` locallapse let file = "/" echo $ fileの経過時間は$(age "$ file")秒です。
見つけるのは良いことですが、特にファイルを何秒古くする必要がある場合は別の方法を使用できると思います
date -d "now - $( stat -c "%Y" $filename ) seconds" +%s
GNU dateを使用
ツール 'stat'の結果を考慮してください。
File: `infolog.txt'
Size: 694 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 11635578 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ fdr) Gid: ( 1000/ fdr)
Access: 2009-01-01 22:04:15.000000000 -0800
Modify: 2009-01-01 22:05:05.000000000 -0800
Change: 2009-01-01 22:05:05.000000000 -0800
ここで、アクセス/変更/変更の3つの日付を確認できます。作成日はありません。ファイルの内容が変更されたとき(「変更」フィールド)またはそのiノードが変更されたとき(「変更」フィールド)だけを確認できます。
両方のフィールドが更新されるときの例:
誰かが追加情報をファイルの末尾に連結すると、「変更」が更新されます。
「変更」は、誰かがchmodを介して許可を変更した場合に更新されます。