文件的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)   
posted @ 2012-05-04 17:38  陳聽溪  阅读(809)  评论(0)    收藏  举报