回答:
変更時間のみ
if test `find "text.txt" -mmin +120`
then
echo old enough
fi
-cmin
変更または-amin
アクセス時間に使用できます。他の人が指摘したように、作成時間を追跡することはできないと思います。
find
一致が見つからないときにゼロ以外を返すと思っていたと思います。
text.txt
ディレクトリではないと推定されます。
[ "$(find path/to/file -mmin +120)" ] && echo "it is old"
私はいつもdate -r /the/file +%s
その年齢を見つけるのに使うのが好きでした。
またtouch --date '2015-10-10 9:55' /tmp/file
、任意の日付/時刻で非常に細かい時刻を取得することもできます。
let AGE=$(($(date +%s)-$(date -r /path/to/file +%s)))
[このように 作成および変更されていない、または「modに対する年齢」という仮定で)年齢の
function file-age { FILE_CREATED_TIME=`date -r "$1" +%s`; TIME_NOW=`date +%s`; echo "$[ ${TIME_NOW} - ${FILE_CREATED_TIME} ]"; }
$[ ]
あり、非推奨ではない場合でも、少なくとも古くて移植性が低く、$(( ))
代わりに使用する必要があります。と逆引用符は、よりも壊れやすいです$( )
。また、関数名のハイフンは完全に移植できない場合があります。でもその本質は良いです!
を使用しstat
てファイルの最終変更日date
を把握し、現在の時刻とバシズムの寛大な使用を把握するには、ファイルの最終変更日時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固有の構文の代わりに使用します
stat
組み込みではありません-私の非常に悪い、私は修正します。
作成時刻は保存されません。
保存されるのは、3つのタイムスタンプです(通常、特定のファイルシステムまたは特定のファイルシステムオプションでオフにできます)。
ファイルへの「変更」は、権限の変更、名前の変更などとしてカウントされます。変更は内容のみです。
ctimeは技術的には作成時ではありませんが、多くの場合そうです。
ctimeはファイルの内容の変更による影響を受けないため、通常はファイルが作成されたときにのみ更新されます。そして、はい-すべての叫び声が聞こえます-アクセス許可または所有権を変更した場合にも更新されますが、通常は、ファイルをそこに配置すると同時に、通常は一度実行されます。
個人的に私は常にすべてに対してmtimeを使用しています。しかし、とにかく...使いやすい関数で、Gussの「魅力的でない」bashのリハッシュです。
#!/ bin / bash 関数age(){ ローカルファイル名= $ 1 local changed = `stat -c%Y" $ filename "` ローカルnow = `日付+%s` ローカル経過 経過=今変更 エコー$ elapsed } file = "/" echo $ fileの経過時間は$(age "$ file")秒です。
local changed=$(perl -MFile::stat -e "print stat(\"${filename}\")->mtime")
superuser.com/questions/427551/...
chmod
、ファイルに適用された単純なはそのアイデアを無効にします。しかし、私はそれをやってあなたと一緒に暮らすことができます ;-)
+%s
後半から欠場しています
age() { echo $(( $(date +%s) - $(date -r "$1" +%s) )); }
(@Grizlyの訂正に感謝します!)
noatime
オプションでマウントされたすべてのファイルシステムでの作成時間であるアクセス時間を使用することをお勧めします(これはパフォーマンスに優れているため、使用する必要があります)。したがって、の%X
代わりに使用してください%Y
。
見つけた方がいいですが、特にファイルが何秒古いかを今すぐ確認する必要がある場合は、別の方法を使用できると思います
date -d "now - $( stat -c "%Y" $filename ) seconds" +%s
GNU日付を使用
ツール「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を介して権限を変更した場合に更新されます。