文章标签 ‘find’

linux find命令小记

2012年2月3日 没有评论

在一个备份脚步中执行了删除7天前的旧备份文件的命令,备份文件存放在/home/backups/files/下,命令如下:

find /home/backups/files/ -mtime +6 -exec rm -rf {} \;

开始时候运行正常,一段时间后发现没有备份了,查看下来,发现/home/backups/files/文件都不存在了。原来是因为find写法有问题,find /home/backups/files/ -mtime +6 出来的结果会包含/home/backups/files/目录(当files目录的创建时间超过7天),是自己想当然的以为在目录后面加了“/”就只查找该目录下的文件,测试下来,find /home/backups/files/ -mtime +6和find /home/backups/files -mtime +6的结果一致。知道问题所在了,解决问题就好办了,只需要在后面加个星号(*)通配符就行了,如下:

find /home/backups/files/* -mtime +6 -exec rm -rf {} \;
分类: Linux 标签: ,

linux下删除文件名乱码文件

2011年9月22日 没有评论

linux下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来。不过借助find命令可以实现对其删除。在linux下对于每个文件都一个对应的不变的inode号,使用 ls -li 可以查看到文件的inode号,同时find可以根据inode号来查找,另外find命令中可以执行其他的命令。删除的步骤如下:

  1. 通过ls -li 获取要删除乱码文件名文件的inode号,比如得到的是 123456
  2. 执行删除
find ./ -inum 123456 -exec rm -rf {} \;

注意:“{}”后要空一格再加上“\;”。

分类: Linux 标签: , , ,

find命令错误提示路径必须在表达式之前

2011年9月22日 没有评论

在某些版本的linux下,通过find查找当前目录下所有后缀名jpg的文件,命令为

find ./ -iname *.jpg

会出现“find: 路径必须在表达式之前”的错误提示。解决的方法有两种

  1. 使用转义符把*转义,即  \*.jpg
  2. 用引号引起来 ,即 “*.jpg”

注意:如果需要把find 的结果提交给while,例如:

`echo find ./ -iname "\*.jpg"` | while read f
do
   #do something
done

则既需要转义符,也需要引号

分类: Linux 标签: ,

linux下find命令根据系统时间查找文件用法

2011年9月5日 没有评论

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

mtime		文件内容上次修改时间
atime		文件被读取或访问的时间
ctime		文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。

N * 24
+1	表示	1 * 24 +24小时以外..
+0	表示	0 * 24 +24小时以外
1	表示	1 * 24 + 24 到 24 之间..
0	表示	0 * 24 + 24 到 0 之间..
-1	表示	0 * 24 +24 内,甚至为未来时间...

1.当前时间24小时—当前时间(昨天-今天)
#find . -mtime 0
2.当前时间48小时前–当前时间24小时前(前天-昨天)
#find . -mtime 1
3.当前时间48小时前(2天前)
#find . -mtime +1
4.当前时间24小时–当前时间(昨天-今天)
#find . -mtime -1

无觅相关文章插件,快速提升流量