因为服务器项目太乱,重新整理,需要把所有的jsp备份,通过find和cp实现查找和复制备份,参考了http://blog.csdn.net/scoliver/article/details/7235897的内容,在我完成中需要连同文件的文件夹一起拷贝,保证项目的路径不变,所以查阅了其他资料,不再一一列出。下面的内容基本能够让我们了解find命令,在此总结使用find几个注意事项。
1、需要查找的*.jsp 需要用“*.jsp”引起来,不然报find: missing argument to `-exec错误
2、-exec 后面接的是linux的相关命令,基本能够实现所有的命令,但需要注意最后的\-反斜线,代表结束,需要与前面的内容有空格。不然报find: missing argument to `-exec错误
3、里面的{}代表find查找到的内容,不可省略。
4、实现连同文件夹一起拷贝,需要在cp 后面加上参数--parent。
5、通过find source目录 -name "*.jsp"|cpio -pdm /back命令也可以实现按目录结构备份查找到的.jsp文件。/back是备份的目录。
下面是参考的文章,需要的可以好好看看
目的:
想查找webui_jsp工程的下面的的postgres驱动程序文件并复制到一个指定的目录。
这样做可以省去了,我查找到文件并且输入很长文件目录的麻烦。
/xxx/$ find webui_jsp/ -name *post*.jar -exec cp {} /tmp/ \;
如果分开来做的话,可以有下面的步骤
/workspace$ find webui_jsp/ -name *post*.jar
webui_jsp/WebRoot/WEB-INF/lib/postgresql-8.3-603.jdbc2.jar
/workspace$ cp webui_jsp/WebRoot/WEB-INF/lib/postgresql-8.3-603.jdbc2.jar /tmp
这两个步骤就需要输入很长的目录,比较麻烦。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
为了查找属主帐户已经被删除的文件,可以使用- n o u s e r选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; f i n d命令能够为你完成相应的工作。
例如,希望在/home目录下查找所有的这类文件,可以用:
$ find /home -nouser -print
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
$ find / -mtime -5 -print
查找更改时间比文件sam新但比文件temp旧的文件:
例:有两个文件
-rw-r--r-- 1 sam adm 0 10月 31 01:07 fiel
-rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam
-rw-rw-rw- 1 root root 2792 10月 31 20:19 temp
# find -newer httpd1.conf ! -newer temp -ls
1077669 0 -rwxrwxr-x 2 sam adm 0 10月 31 01:01 ./httpd.conf
1077671 4 -rw-rw-rw- 1 root root 2792 10月 31 20:19 ./temp
1077673 0 -rw-r--r-- 1 sam adm 0 10月 31 01:07 ./fiel
可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1M字节的文件:
在当前目录下查找长度超过10块的文件(一块等于512字节):
$ find . -size +10 -print
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
在下面的例子中,find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。
它将首先匹配所有的文件然后再进入子目录中查找。
$ find / -name "CON.FILE" -depth -print
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。
从当前目录开始查找位于本文件系统中文件名以XC结尾的文件:
$ find . -name "*.XC" -mount -print
cpio命令可以用来向磁带设备备份文件或从中恢复文件。可以使用find命令在整个文件系统中(更多的情况下是在部分文件系统中)查找文件,然后用cpio命令将其备份到磁带上。
如果希望使用cpio命令备份/etc,/home和/apps目录中的文件,可以使用下面所给出的命令,不过要记住你是在文件系统的根目录下:
#find etc home apps -depthe -print | cpio -ivcdC65535 -o
在上面的例子中,应当注意到路径中缺少/。这叫作相对路径。之所以使用相对路径,是因为在从磁带中恢复这些文件的时候,可以选择恢复文件的路径。例如,可以将这些文件先恢复到另外一个目录中,对它们进行某些操作后,再恢复到原始目录中。如果在备份时使用了绝对路径,例如/etc,那么在恢复时,就只能恢复到/etc目录中去,别无其他选择。在上面的例子中,我告诉f i n d命令首先进入/etc目录,然后是/home和/apps目录,先匹配这些目录下
的文件,然后再匹配其子目录中的文件,所有这些结果将通过管道传递给cpio命令进行备份。
顺便说一下,在上面的例子中cpio命令使用了C65536选项,本可以使用B选项,不过这样每块的大小只有512字节,而使用了C65536选项后,块的大小变成了64K 字节(65536/1024)
联系客服