文件的3种时间,根据文件的时间来对文件进行各种操作:touch,find,mv,rm
... http://blog.hackroad.com/read.php/515.htm
Linux:find 按文件修改时间查找文件,find空文件夹命令
17:54,26,Apr,2012 | (20/0/0) | 本站原创
Demo:
常用两天前修改过的文件:
find . -type f -mtime -2
3天内修改过的文件:
find -ctime -3
find命令使用超过6天,空文件独立查询命令。
find /data/backup -ctime +6 -exec rm -f {} \; 删除/data/backup目录下修改时间超过6天的文件。
find /data/backup -type d -empty -exec rmdir {} \; >/dev/null 2>&1 删除/data/backup目录下空的文件夹,同时输出正确和错误信息到空。
查找超过6天且是空文件的find命令:
find ./ -type d -empty -ctime +6
一个同学问我在linux怎样按修改时间来查找文件,我Google之后才得到答案,写个笔记吧。
find /home/admin -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件
find /home/admin -name *.txt -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件名为.txt结尾的文件
find 按文件修改时间查找文件
---(+n)----------|----------(n)----------|----------(-n)---
(n+1)*24H前| (n+1)*24H~n*24H间 |n*24H内
-ctime -n 查找距现在 n*24H 内修改过的文件
-ctime n 查找距现在 n*24H 前, (n+1)*24H 内修改过的文件
-ctime +n 查找距现在 (n+1)*24H 前修改过的文件
[a|c|m]min [最后访问|最后状态修改|最后内容修改]min
[a|c|m]time [最后访问|最后状态修改|最后内容修改]time
linux 文件的三种时间(以 find 为例):
atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;
ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;
mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.
注意: linux 里是不会记录文件的创建时间的, 除非这个文件自创建以来没有发生改变, 那么它的创建时间就是它的最后一次修改时间.
#ls -lt /home/admin # 按修改时间顺序查看
#ls -lut /home/admin # 按访问时间顺序查看
(如果想反序查看的话需要加一个选项 -r)
参考资料:
http://shawonline.blog.51cto.com/304978/199674 http://bbs.chinaunix.net/thread-1697571-1-1.html
mkdir /tmp/workdir
mv *.log /tmp/workdir
cd /tmp/workdir
for f in *.log
do
datedir=$(stat +%y "$f" | sed 's/ .*//;s/-//g')
[ -d "$datedir"] || mkdir "$datedir"
mv "$f" "$datedir"
done
复制代码
http://blog.csdn.net/wanwenweifly4/article/details/6426329要求:
1.找到所有以.log结尾的文件。
2.将找到的文件放到临时目录/tmp
3.根据文件的修改时间,把文件归类,批量移动到以文件修改时间为目录名的目录中。mkdir /tmp/workdir
mv *.log /tmp/workdir
cd /tmp/workdir
for f in *.log
do
datedir=$(stat -c %y $f | sed 's/ .*//;s/-//g')
[ -d "$datedir"] || mkdir "$datedir"
mv "$f" "$datedir"
donestat -c %y $f | sed 's/ .*//;s/-//g' 获取*.log last modification时间,然后sed将修改时间后端.和-部分去除%x Time of last access
%X Time of last access as seconds since Epoch
%y Time of last modification
%Y Time of last modification as seconds since Epoch
%z Time of last change
%Z Time of last change as seconds since EpochEpoch就是传说中的从970年01月01日00时00分00秒到现在的秒数################################################http://topic.csdn.net/u/20090616/10/c372adcd-1c3e-48e1-ba88-6bc5ac1b8c2f.htmlctime=change time
atime=access time
mtime=modifiy time
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime http://it.kswchina.com/Linux/xd/640451.html 在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。 与文件相关的几个时间: 1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。 2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。 3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。 比如: [jing@zhjh c]$ stat temp.c 引用: File: 'temp.c' Size: 66 Blocks: 8 IO Block: 4096 \u4e00\u822c\u6587\u4ef6 Device: 807h/2055d Inode: 1191481 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/ jing) Gid: ( 500/ jing) Access: 2008-03-12 20:19:45.000000000 0800 Modify: 2008-03-12 20:19:45.000000000 0800 Change: 2008-03-12 20:19:45.000000000 0800 说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。 http://linux.ctocio.com.cn/47/12173547.shtmltouch的用法为: touch [-actmd] 文件 参数: -a:仅修改access time -c:仅修改时间而不建立文件 -t:后面可以接时间,格式为:[YYMMDDhhmm] -m:仅修改mtime -d:后面可以接日期,也可以使用--date="日期或时间" 例如:将man.config的日期调整为两天前,则: #touch -d "2 days ago" /etc/man.config 结果atime和mtime将会改变而ctime不会改变。 通过touch命令,可以轻松的修改文件文件的日期与时间,并且也可以建立一个空文件,不过要注意的是,即使复制一个文件并复制所有属性页没有办法复制ctime属性。 touch命令常用的情况是 1)建立一个空文件 2)将某个文件日期修改为当前日期(mtime和atime)