二、把找到的文件清单保存到文件中 。
Find命令还可以根据文件的权限来查找 。如把用户主目录下所有用户都可以读写的文件找出来 。这些文件所有的用户都可以修改,为此具有一定的安全隐患 。系统工程师可能希望把这些文件对应的清单保存到一个文件中,然后他们可以根据这份清单一个个的去调整权限 。如果只是显示在屏幕中的话,对于他们后需的工作很不方便 。总不能够拿笔抄下来或者每修改一个执行一下查询命令吧?为此把找到的文件清单保存到一个文本文件中是必需的 。要实现这个需求的话,可以采用如下命令:
Find /home –perm 666 –type f –ls >detail.txt
在这条命令中,条件语句中主要用了两个参数,分别为权限参数perm与文件类型参数-type 。在Unix操作系统中主要包括三类文件(其余几类不怎么用),分别为普通文件、目录文件与连接文件 。这里只需要寻找普通文件,为此就可以利用-type参数来指定需要查找的文件类型 。另外值得注意的是,如果在条件语句中有多个参数话,则其默认会采取的是与运算,即必须同时满足以上两个条件的文件才会被查找出来 。如果系统工程师需要采用或预算的话,则需要在参数之间加入-o可选项,它表示条件之间的关系是或的关系,只需要满足其中任何一个条件即可 。在查询条件中还有一个很重要的操作符,即!操作符,它表示相反的条件 。如现在系统工程师想查找所有的目录文件与普通文件(不考虑其他种类的特殊文件),则有两种表示方法 。一是 –type f –o –type –d;二是! –type l 。很明显采用了!操作符的第二种处理方式要简单的多 。为此系统工程师可以根据自己的需要来选择合适的操作符 。
其次在第三部分的动作参数中大家可以看到,在上面的例子中采用了exec关键字,但是在这个例子中却没有用到 。这是为什么呢?原来在find命令的定义中,由于ls命令与print命令比较常用,为此用到这两个命令的时候,直接利用横杆加上命令即可 。如果使用其他命令则需要加入exec关键字 。
三、交互式复制找到的文件 。
如现在用户需要把某个文件夹下自己所创建的文件复制到另外一个目录中 。但是并不是所有的文件,用户希望能够自己来选择是否需要进行复制 。要实现这个目的的话,就需要用到find命令中的ok参数 。在命令参数种加入-ok选项,主要是告诉操作系统这个命令需要以交互式的方式来执行 。当用户输入y的话,操作系统就会执行这些动作;而输入n的话,则会忽略 。
如要实现上面这个需求,可以执行这个命令来实现 。Find /home –user oracle –ok cp {} /backup ;此时这个OK选项的意思就是当把每个查找到的文件移动到指定的目录时,不管目标文件是否存在,都需要用户进行确认 。只有用户输入y后,ok 后面的命令才会被执行,否则的话就会被忽略不计 。除了OK选项外,有些命令本身就包含了一个交互性的选项 。如rm文件删除命令 。若没有带-i交互性选项的话,则操作系统会直接删除文件,而不会等待用户确认 。但是若在这个命令后面加入-i选项的话,则每删除一个文件的话,系统就会提示用户确认 。只要命令本身就支持这个-i交互式选项,那么在find命令中就可以直接使用这个参数,而不需要利用ok选项 。在大部分命令中,这两个选项的效果是相同的 。但是有些则不同 。如CP命令 。Cp –i命令表示把文件从一个地方复制到另外一个地方,如果目标文件已经存在的话,则会提醒用户是否需要覆盖;如果不存在的话则会直接复制过去 。但是采用ok 选项的话则表示无论目标文件是否存在,都需要系统管理员一一进行确认 。也就是说-i选项只有在目标文件存在的时候,可能需要覆盖才会让用户进行确认 。而ok选项的话则根本不管目标文件存在与否,都要进行确认 。到底需要采用哪个参数,则就要根据用户的需要了 。
推荐阅读
- 用户名字母数字下划线是什么意思
- 什么叫乡下人
- unix中利用Find命令备份根文件系统
- Unix系统中LVM硬盘管理的好帮手
- Unix文件安全检查利器- Tripwire
- win10系统设置开机密码具体操作步骤
- 深度解析Unix中inode块与超级块
- unix口令文件介绍
- simp server for unix 配置教程
- 有用的冷知识