1.定时删除日志命令
find /home/jf_inms/NP_ITF_SERVER/logs/FTP_LOG_CHEAK -name "FTP_LOG_CHEAK_INFO_*" -mtime 30 -exec rm {} \;
解释:
find [
-H |
-L ]
Path ... [
Expression ]
2.通过调用shell定时转移文件
find ./ \( -name "*" -a ! -type d \) -ctime +1 | awk '{print $1}' | xargs mvfile.sh
find ./ \( -name "*" -a ! -type d \) -ctime +1 | awk '{print $1}' | xargs mvfile.sh
find命令详解摘自 AIX 5L Version 5.2 National Language Support Guide and Reference
描述
find 命令对每个指定的
Path 参数递归搜索目录树,搜索与布尔表达式匹配的文件,布尔表达式是使用以下文本中给出的项写的。当
find 命令递归下降目录结构时,它不会下降到那些只是象征性链接到当前层次结构的目录。
find 命令的输出取决于
Expression 参数指定的项。
find 命令不支持 4.3 BSD 快速查找语法。
标志
-H | 导致为命令行上多次遇到的每个符号链接求值的文件信息和文件类型成为链接引用的文件的信息和类型,而不是链接本身的。如果引用的文件不存在,则文件信息与类型将用于链接本身。不在命令行上的所有符号链接的文件信息将是链接本身的信息。 |
-L | 导致为每个符号链接求值的文件信息和文件类型成为链接引用的文件的信息和类型,而不是链接本身的。 |
表达式项
这些布尔表达式和变量描述了
find 命令的搜索边界,如在
Path 和
Expression 参数定义的那样。
注:
在下面的定义中,变量
n 指定了一个十进制的整数,它能表示为
+
n(超过
n)、
-
n(少于
n)或者
n(恰好等于
n)。
以下表达式可通过使用以下优先权降序排列的运算符组合在一起:
- (表达式)一个表达式和运算符的附加组(括号对于 shell 是特定的,并且需要反斜杠转义序列)。
- ! 表达式 — 某个表达式取反('!' 是一元“非”运算符)。
- 表达式 [ -a ] 表达式 — 表达式的串联(AND 运算由两个初始量的并列默示或者明确的以 -a 来规定)。
- 表达式-o 表达式 — 初始量的交替;-o 是 OR 运算符。如果第一个表达式是真,就不会对第二个表达式求值。
注:
当一起使用
find 和
cpio 命令的时候,当将
-L 选项与
cpio 命令一起使用时,您必须将
-follow 选项与
cpio 命令一起使用,反之亦然。不一起使用这两个选项会造成不期望的结果。如果没有表达式,
-print 就用作缺省表达式。例如,如果给定的表达式不包含任何初始量
-exec、
-o k 或者
-print,则那些给定的表达式将被替换为
(给定表达式)-print。
-user、
-group 和
-newer 每个初始量只计算一次它们各自的参数。使用以参数
-exec 或者
-ok 指定的命令不会影响到同一个文件中的后续初始量。
退出状态
此命令返回以下出口值:
0 | 所有的 Path 参数都被成功遍历。 |
>0 | 发生错误。 |
示例
- 要用一个给定的基本文件名称来列出文件系统中的所有文件,请输入:
find / -name .profile -print这搜索整个文件系统并且写出以 .profile 命名的所有文件的完整路径名称。/(斜线)告诉 find 命令搜索根目录及其所有子目录。要不浪费时间,最好通过指定您认为那些文件可能存在的文件目录的方式来限定搜索。
- 要列出当前目录树中有特殊许可权代码的那些文件,请输入:
find . -perm 0600 -print这会列举出那些所有者才有读、写权限的文件的名字。 .(点)让 find 命令搜索当前目录及其子目录。请参阅 chmod 命令以获取许可权代码的说明。
- 要用特定的许可权代码来搜索几个目录中的文件,请输入:
find manual clients proposals -perm -0600 -print这将列举出那些有所有者读写权限和其它可能的权限的文件名称。搜索 manual、clients 和proposals 目录和它们的子目录。在前一个例子中,-perm 0600 只选择那些许可权代码完全与 0600 匹配的文件。在此例中,-perm -0600 选择具有允许 0600 和其它高于 0600 级别的访问的许可权代码的文件。这也与许可权代码 0622 和 2744 匹配。
- 要列出当前目录中在当前 24 小时的时间内更改过的所有文件,请输入:
find . -ctime 1 -print
- 要搜索那些有多个链接的常规文件,请输入:
find . -type f -links +1 -print这将列举出那些有超过一个链接(-links+1)的普通文件的名字(-type f)。注:每个目录至少有两个链接:它父目录的入口链接和它自己的 .(点)条目。 ln 命令解释多个文件链接。
- 要找到那些路径名称包含 find 的所有可访问的文件,请输入:
find . -name '*find*' -print
- 要除去所有那些以 a.out 或者 *.o 命名的文件,这些文件有一周没被访问并且不是使用 nfs 安装的,请输入:
find / \( -name a.out -o -name '*.o' \) -atime +7 ! -fstype nfs -exec rm {} \;注:在表达式 -atime 中使用的数是 +7。如果您想让这个命令在那些超过一个星期(7 个 24 小时)没被访问的文件上运行,这就是正确的命令行。
- 要打印在当前目录或者低于当前目录的所有文件的路径名称,这其中不包括名为 SCCS 或者在 SCCS 目录中的目录,请输入:
find . -name SCCS -prune -o -print要打印在当前目录或者低于当前目录的所有文件的路径名,并且包括在名为 SCCS 的目录中的文件,请输入:
find . -print -name SCCS -prune
- 要搜索那些恰好是 414 个字节长的所有文件,请输入:
find . -size 414c -print
- 要找到并删除在您的主目录中后缀为 .c 的每个文件,请输入:
find /u/arnold -name "*.c" -exec rm {} \;
每次 find 命令识别一个带有后缀名 .c 的文件,然后 rm 命令删除这个文件。 rm 命令是为表达式 -exec 指定的唯一参数。{} (花括号) 表示当前的路径名称。 - 在此示例中,dirlink 是到目录 dir 的符号链接。可通过在命令行引用符号链接 dirlink 列出 dir 中的文件。要进行此操作,请输入:
find -H dirlink -print
- 在此示例中,dirlink 是到目录 dir 的符号链接。要列出 dirlink 中遍历 dir 下包含任何符号链接的文件层次结构的文件,请输入:
find -L dirlink -print
- 要确定符号链接 dirlink 引用的文件 dir1 是否比 dir2 新,请输入:
find -H dirlink -newer dir2
注:因为使用了 -H 标志,时间数据不从 dirlink 收集,而从 dir1(遍历符号链接时找到此文件)收集。
注意:-atime 访问 -ctime -mtime 修改
转载于:https://blog.51cto.com/wuql4689908/645893