例如,MySQL服务器正在我的Ubuntu机器上运行。 某些数据在过去24小时内已更改。
什么(Linux)脚本可以找到过去24小时内更改过的文件?
请列出文件名,文件大小和修改时间。
你可以使用stackoverflow.com/questions/4561895/
要查找特定特定目录及其子目录中过去24小时(最后一整天)中修改的所有文件:
find /directory_path -mtime -1 -ls
应该是你喜欢的
1之前的-很重要 - 它意味着一天或更短时间内发生了任何变化。
1之前的+意味着至少在一天之前发生了任何变化,而在1之前没有任何东西意味着它在一天前被改变了,不多也不少。
太好了! 过去2个小时怎么样?
使用"-mmin -120"而不是mtime
谢谢你的回答,但我想得到返回值,如果这个命令有一些修改过的文件,如果没有?
我是否理解正确,如果修改了任何文件,你想检查一个目录,并返回一个布尔值告诉你是否有?
为什么-之前的数值?
-mtime的参数被解释为文件年龄中的整天数。 -mtime + n表示严格大于-mtime -n表示严格小于。
对于读者:在脚本中使用时不要忘记删除-ls
你可以这样做
find . -mtime 0
来自man find:
[The] time since each file was last modified is divided by 24 hours and any remainder is discarded. That means that to
match -mtime 0, a file will have to have a modification in the past which is less than 24 hours ago.
另一种更人道的方式:
find / -newermt"-24 hours" -ls
要么:
find / -newermt"1 day ago" -ls
要么:
find / -newermt"yesterday" -ls
在GNU兼容系统(即Linux)上:
find . -mtime 0 -printf '%T+\t%s\t%p
' 2>/dev/null | sort -r | more
这将列出在过去24小时内修改过的文件和目录(-mtime 0)。它将以可排序和人类可读的格式(%T+)列出最后修改时间,然后是文件大小(%s),后跟完整文件名(%p),每个都是分开的通过制表符(\t)。
2>/dev/null抛弃任何stderr输出,以便错误信息不会使水变得混乱; sort -r按最近修改的结果对结果进行排序;并且| more一次列出一页结果。
我想你也可以使用| less而不是| more。
这个命令对我有用
find . -mtime -1 -print
对于将来降落在这里的其他人(包括我自己),添加-name选项以查找特定的文件类型,例如:find /var -name"*.php" -mtime -1 -ls
您需要使用双引号保护*,否则它将在命令行上展开:find /var -name"*.php" -mtime -1 -ls