[unix shell笔记] - find命令

find 命令格式如下:
find pathname -options [-print -exec -ok]

 

pathname 查找路径, 可以是.  ~  /  /directory等形式

-option  主要选项如下:
-name          按照文档名称查找
-perm          按照文档权限查找
-prune         不在当前指定的路径查找。假如同时指定了-depth选项,则prune被忽略
-user          按照文档属主查找
-group         按照文档属组查找
-mtime -n +n   按照文档更改时间查找。-n 指距离现在时间n天以内;+n n天以外
-nogroup       查找没有有效所属用户组的所有文件(/etc/passwd里不存在的)

-nouser        查找没有有效所属用户的所有文件(/etc/passwd里不存在的)
-newer file1 !file2   查找更改时间比file1新比file2旧的文档
-type          查找某一类型文档
    b          块设备文档
    d          目录
    c          字符设备文档
    P          管道文档
    l          符号链接文档
    f          普通文档
-size n[c]     查找文档长度为n块的文档 有[c]表示文档长度以字节计,+1000000c表示大于1M字节
-depth         查找时,首先查找当前目录文档,然后再在其子目录查找
-fstype        查找位于某一类型文档系统中的文档,文档系统类型可在/etc/fstab中找到
-mount         查找文档不跨越文档系统mount点
-follow        如碰到链接文档,则跟踪至链接所指向文档
-cpio          对匹配的文档使用cpio命令,将文档备份到磁带设备中
-print         将匹配的文档输出到标准输出
-exec          对匹配的文档执行所给的shell命令。形式为:command { } \;注意{ }和\;之间的空格
-ok            和-exec作用相同,但在执行每个命令之前都会给出提示用户

使用cpio选项
cpio命令可以用来向磁带设备备份文件或从中恢复文件。可以使用find命令在整个文件系统中(更多的情况下是在部分文件系统中)查找文件,然后用cpio命令将其备份到磁带上。
如果希望使用cpio命令备份/etc、/home和/apps目录中的文件,可以使用下面所给出的命令,不过要记住你是在文件系统的根目录下:
$cd /
$find etc home apps -depth -print |cpio -ivcdC65536 -o /dev/rmt0
在上面的例子中,应当注意到路径中缺少/。这叫作相对路径。之所以使用相对路径,是因为在从磁带中恢复这些文件的时候,可以选择恢复文件的路径。例如,可以将这些文件先恢复到另外一个目录中,对它们进行某些操作后,再恢复到原始目录中。如果在备份时使用了绝对路径,例如/etc,那么在恢复时,就只能恢复到/etc目录中去,别无其他选择。在上面的例子中,我告诉find命令首先进入/etc目录,然后是/home和/apps目录,先匹配这些目录下的文件,然后再匹配其子目录中的文件,所有这些结果将通过管道传递给cpio命令进行备份。
顺便说一下,在上面的例子中cpio命令使用了C65536选项,我本可以使用B选项,不过这样每块的大小只有512字节,而使用了C65536 选项后,块的大小变成了64K字节(65536/1024)。

你可能感兴趣的:(shell,unix,笔记,find,休闲)