查看配置文件列表
:scriptnames
删除两行间的换行符
J
重做
CTRL-R
撤销
u
行撤销
U
括号匹配
%
移动到指定行
nG(G会把光标移到文件末)
设置行号
:set number
关闭行号
:set nonumber
查看配置文件列表
:scriptnames
删除两行间的换行符
J
重做
CTRL-R
撤销
u
行撤销
U
括号匹配
%
移动到指定行
nG(G会把光标移到文件末)
设置行号
:set number
关闭行号
:set nonumber
滚屏
CTRL-U CTRL-D
CTRL-F CTRL-B
查找
/正向 ?反向
n/N 下一个/上一个
忽略大小写
:set ignorecase
\> 表示单词末尾/\<单词开头 比如/\<the\> 将会查找单词 the
高亮显示匹配
:set hlsearch
可视模式
字符选择
v 例如vll
行选择
V 例如Vjj
拷贝
y 复制
p 粘贴
2007年9月21日星期五
安装subversion
apt-get update
安装apache2
apt-get install apache2
安装subversion
apt-get install libapache2-svn subversion
创建目录
mkdir /home/svn
创建项目
svnadmin create /home/svn/foo
由于要用apache2来提供服务, 更改目录权限
chown www-data.www-data /home/svn/foo -R
配置apache2
/etc/apache2/mods-available/dav_svn.conf
//表示svn仓库位于/svn虚拟目录下面,意思是版本库的URL是http://MyServer/svn/
DAV svn //表示dav启用svn支持
SVNParentPath /home/svn //表示使用SVNParent方式,并且仓库的物理路径为/home/svn
AuthType Basic //激活基本认证,就是用户名/密码
AuthName "Subversion Repository" //用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile /etc/apache2/dav_svn.passwd //表示用户认证文件是/etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz ////表示用户权限文件是 /etc/apache2/dav_svn.authz
#
Require valid-user //指定只有输入了正确的用户/密码的用户可以访问URL
#
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user
to
Require valid-user
配置访问权限
/etc/apache2/dav_svn.authz(/etc/apache2/mods-available/dav_svn.conf指定的)
[foo:/]
* =
tony = rw
然后在添加用户到 /etc/apache2/dav_svn.passwd
htpasswd -c /etc/apache2/dav_svn.passwd tony
访问测试
http://localhost:81/svn/foo
现在因为我们还没有往svn是添加任何东西,所以我们看到的是"Revision 0: /"
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html
http://mattl.co.uk/apache2subversiondebianhowto.html
http://www.howtoforge.com/apache_subversion_repository_p2
http://www.howtoforge.com/debian_subversion_websvn
生成私钥
openssl genrsa 1024 > gzjs.gov.cn.key
生成证书签署申请CSR
openssl req -new -key gzjs.gov.cn.key > gzjs.gov.cn.csr
用自己的私钥签署申请,生成证书
openssl req -x509 -key gzjs.gov.cn.key -in gzjs.gov.cn.csr > gzjs.gov.cn.crt
添加以下内容到站点配置文件
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/gzjs.gov.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/gzjs.gov.cn.key
添加一下内容
SSLRequireSSL
到/etc/apache2/mods-available/dav_svn.conf文件
重启
http://wiki.debian.org.hk/w/Generate_SSL_cert
安装apache2
apt-get install apache2
安装subversion
apt-get install libapache2-svn subversion
创建目录
mkdir /home/svn
创建项目
svnadmin create /home/svn/foo
由于要用apache2来提供服务, 更改目录权限
chown www-data.www-data /home/svn/foo -R
配置apache2
/etc/apache2/mods-available/dav_svn.conf
DAV svn //表示dav启用svn支持
SVNParentPath /home/svn //表示使用SVNParent方式,并且仓库的物理路径为/home/svn
AuthType Basic //激活基本认证,就是用户名/密码
AuthName "Subversion Repository" //用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile /etc/apache2/dav_svn.passwd //表示用户认证文件是/etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz ////表示用户权限文件是 /etc/apache2/dav_svn.authz
#
Require valid-user //指定只有输入了正确的用户/密码的用户可以访问URL
#
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user
to
Require valid-user
配置访问权限
/etc/apache2/dav_svn.authz(/etc/apache2/mods-available/dav_svn.conf指定的)
[foo:/]
* =
tony = rw
然后在添加用户到 /etc/apache2/dav_svn.passwd
htpasswd -c /etc/apache2/dav_svn.passwd tony
访问测试
http://localhost:81/svn/foo
现在因为我们还没有往svn是添加任何东西,所以我们看到的是"Revision 0: /"
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html
http://mattl.co.uk/apache2subversiondebianhowto.html
http://www.howtoforge.com/apache_subversion_repository_p2
http://www.howtoforge.com/debian_subversion_websvn
生成私钥
openssl genrsa 1024 > gzjs.gov.cn.key
生成证书签署申请CSR
openssl req -new -key gzjs.gov.cn.key > gzjs.gov.cn.csr
用自己的私钥签署申请,生成证书
openssl req -x509 -key gzjs.gov.cn.key -in gzjs.gov.cn.csr > gzjs.gov.cn.crt
添加以下内容到站点配置文件
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/gzjs.gov.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/gzjs.gov.cn.key
添加一下内容
SSLRequireSSL
到/etc/apache2/mods-available/dav_svn.conf文件
重启
http://wiki.debian.org.hk/w/Generate_SSL_cert
2007年9月19日星期三
ab 压力测试
20490 tomcat55 18 0 303m 90m 5900 S 109 4.5 1:27.28 jsvc
# ab -c 1000 -n 100000 http://127.0.0.1:8080/gzjsgov/index.html
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests
Server Software: Apache-Coyote/1.1
Server Hostname: 127.0.0.1
Server Port: 8080
Document Path: /gzjsgov/index.html
Document Length: 7760 bytes
Concurrency Level: 1000
Time taken for tests: 49.334775 seconds
Complete requests: 100000
Failed requests: 12
(Connect: 0, Length: 11, Exceptions: 1)
Write errors: 0
Total transferred: 799601930 bytes
HTML transferred: 777070880 bytes
Requests per second: 2026.97 [#/sec] (mean)
Time per request: 493.348 [ms] (mean)
Time per request: 0.493 [ms] (mean, across all concurrent requests)
Transfer rate: 15827.80 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 376 1235.8 42 21067
Processing: 12 97 331.6 55 7291
Waiting: 0 84 326.1 47 7257
Total: 30 473 1352.8 109 21153
Percentage of the requests served within a certain time (ms)
50% 109
66% 133
75% 148
80% 160
90% 223
95% 3129
98% 3768
99% 9044
100% 21153 (longest request)
# ab -c 1000 -n 100000 http://127.0.0.1:8080/gzjsgov/index.html
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests
Server Software: Apache-Coyote/1.1
Server Hostname: 127.0.0.1
Server Port: 8080
Document Path: /gzjsgov/index.html
Document Length: 7760 bytes
Concurrency Level: 1000
Time taken for tests: 49.334775 seconds
Complete requests: 100000
Failed requests: 12
(Connect: 0, Length: 11, Exceptions: 1)
Write errors: 0
Total transferred: 799601930 bytes
HTML transferred: 777070880 bytes
Requests per second: 2026.97 [#/sec] (mean)
Time per request: 493.348 [ms] (mean)
Time per request: 0.493 [ms] (mean, across all concurrent requests)
Transfer rate: 15827.80 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 376 1235.8 42 21067
Processing: 12 97 331.6 55 7291
Waiting: 0 84 326.1 47 7257
Total: 30 473 1352.8 109 21153
Percentage of the requests served within a certain time (ms)
50% 109
66% 133
75% 148
80% 160
90% 223
95% 3129
98% 3768
99% 9044
100% 21153 (longest request)
2007年9月17日星期一
学英语,有捷径
18岁的捷克司机Matej开车撞了,45分钟后醒来,他用流利的完整的无口音的英式英语和护士们交谈
未撞之前啊,小伙子才刚开始学英语
医生们从技术上这样解释:车祸使他脑内某些组织重组了
不幸的是,2天后,小伙子的技能就消失了,而且对那场车祸毫无记忆
然后,他又高高兴兴地去学英语了
Diggers:
D-1:有一次我不小心摔了Vista的本本,重启后就变Ubuntu了
D-2:这是说明英语能力与脑损伤有联系的第一手临床证据
D-3:对啊对啊,上次一个美国人拿自己头吹气,结果成英国佬的口音了。这不完全说明英国人都与精神错乱有点关系
D-4:Oh,快撞我一下吧,我明天要考西班牙语
未撞之前啊,小伙子才刚开始学英语
医生们从技术上这样解释:车祸使他脑内某些组织重组了
不幸的是,2天后,小伙子的技能就消失了,而且对那场车祸毫无记忆
然后,他又高高兴兴地去学英语了
Diggers:
D-1:有一次我不小心摔了Vista的本本,重启后就变Ubuntu了
D-2:这是说明英语能力与脑损伤有联系的第一手临床证据
D-3:对啊对啊,上次一个美国人拿自己头吹气,结果成英国佬的口音了。这不完全说明英国人都与精神错乱有点关系
D-4:Oh,快撞我一下吧,我明天要考西班牙语
2007年9月16日星期日
man 使用技巧两则
1. 使用书签
man 其实是调用 less 来显示手册页的。因此,在阅读内容比较长的页面时,可以使用书签来标记需要重复阅读的重要内容。标记的方法为:先按 m 键,然后在 mark: 后输入标记字母,如 a。需要说明的是,标记符是区分大小写的,也就是说 a 与 A 是两个不同的标记符。
当你需要返回先前设置的书签时,可以按 ‘ 键(单引号)。此时会显示 goto mark:,输入你设置的标记符即可。
2.测试命令
当你在阅读 man 手册页时想要对命令的用法进行尝试的话,那么可以使用 !。这让你不必打开新的终端,也不用离开 man 手册的阅读页面。在按下 ! 之后,你就可以自由输入所要测试的命令了。完成后,按回车键将返回到 man 手册的阅读页面。
http://linuxtoy.org/archives/man-tricks.html
man 其实是调用 less 来显示手册页的。因此,在阅读内容比较长的页面时,可以使用书签来标记需要重复阅读的重要内容。标记的方法为:先按 m 键,然后在 mark: 后输入标记字母,如 a。需要说明的是,标记符是区分大小写的,也就是说 a 与 A 是两个不同的标记符。
当你需要返回先前设置的书签时,可以按 ‘ 键(单引号)。此时会显示 goto mark:,输入你设置的标记符即可。
2.测试命令
当你在阅读 man 手册页时想要对命令的用法进行尝试的话,那么可以使用 !。这让你不必打开新的终端,也不用离开 man 手册的阅读页面。在按下 ! 之后,你就可以自由输入所要测试的命令了。完成后,按回车键将返回到 man 手册的阅读页面。
http://linuxtoy.org/archives/man-tricks.html
中国茶和茶具的搭配
选择茶具,除了注重器具的质地之外,还应注意外观的颜色。只有将茶具的功能、质地、色泽三者统叫协调,才能选配出完美的茶具。
陶瓷器的色泽与胎或釉中所合矿物质成分密切相关,而相同的矿物质成分因其含量高低,也可变化出不同的色泽。陶器通常用含氧化铁的粘土烧制,只是烧成温度、氧化程度不同,色泽多为黄、红棕、棕、灰等颜色。而瓷器的花色历来品种丰富,变化多端。
茶具的色泽主要指制作材料的颜色和装饰图案花纹的颜色,通常可分为冷色调与暖色调两类。冷色调包括蓝、绿、青、白、厂、黑等色,暖色调包括黄、橙、红、棕等色。茶具色泽的选择主要是外观颜色的选择搭配。其原则是要与茶叶相配。饮具内壁以白色为好,能真实反映茶汤色泽与明亮度。同时,应注意一套茶具中壶、盅、杯等的色彩搭配,再辅以船、托、盖置,做到浑然一体。如以主茶具色泽为基准配以辅助用品,则更是天衣无缝。各种茶类适宜选配的茶具色泽大致如下:
名优绿茶:透色玻璃杯,应无色、无花、无盖。或用白瓷、青瓷、青花瓷无盖杯。
花茶:青瓷、青花瓷等盖碗、盖杯、壶杯具。
黄茶:奶白或黄釉瓷及黄橙色壶杯具、盖碗、盖杯。
红茶:内挂白釉紫砂、白瓷、红釉瓷、暖色瓷的壶杯具、盖杯、盖碗或咖啡壶具。
白茶:白瓷或黄泥炻器壶杯及内壁有色黑瓷。
乌龙茶:紫砂壶杯具,或白瓷壶杯具、盖碗、盖杯。也可用灰褐系列炻器壶杯具。
http://eat.csonline.com.cn/jcss/200709/t20070903_728562.htm
陶瓷器的色泽与胎或釉中所合矿物质成分密切相关,而相同的矿物质成分因其含量高低,也可变化出不同的色泽。陶器通常用含氧化铁的粘土烧制,只是烧成温度、氧化程度不同,色泽多为黄、红棕、棕、灰等颜色。而瓷器的花色历来品种丰富,变化多端。
茶具的色泽主要指制作材料的颜色和装饰图案花纹的颜色,通常可分为冷色调与暖色调两类。冷色调包括蓝、绿、青、白、厂、黑等色,暖色调包括黄、橙、红、棕等色。茶具色泽的选择主要是外观颜色的选择搭配。其原则是要与茶叶相配。饮具内壁以白色为好,能真实反映茶汤色泽与明亮度。同时,应注意一套茶具中壶、盅、杯等的色彩搭配,再辅以船、托、盖置,做到浑然一体。如以主茶具色泽为基准配以辅助用品,则更是天衣无缝。各种茶类适宜选配的茶具色泽大致如下:
名优绿茶:透色玻璃杯,应无色、无花、无盖。或用白瓷、青瓷、青花瓷无盖杯。
花茶:青瓷、青花瓷等盖碗、盖杯、壶杯具。
黄茶:奶白或黄釉瓷及黄橙色壶杯具、盖碗、盖杯。
红茶:内挂白釉紫砂、白瓷、红釉瓷、暖色瓷的壶杯具、盖杯、盖碗或咖啡壶具。
白茶:白瓷或黄泥炻器壶杯及内壁有色黑瓷。
乌龙茶:紫砂壶杯具,或白瓷壶杯具、盖碗、盖杯。也可用灰褐系列炻器壶杯具。
http://eat.csonline.com.cn/jcss/200709/t20070903_728562.htm
2007年9月14日星期五
find和xargs使用详解
1.find
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( N F S ),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0 G字节以上的文件系统)。
find命令的一般形式为:
find pathname -options [-print -exec -ok ...]
让我们来看看该命令的参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' command' { } ;,注意{ }和;之间的空格。
-ok: 和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find命令选项
-name:按照文件名查找文件。
-perm:按照文件权限来查找文件。
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有- a t i m e和- c t i m e选项,但它们都和- m t i m e选项。
-nogroup:查找无有效所属组的文件,即该文件所属的组在/ e t c / g r o u p s中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d中不存在。
-newer file1 ! file2:查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/ e t c / f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统m o u n t点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
(在有些操作系统中只允许- e x e c选项执行诸如l s或ls -l这样的命令)。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行r m命令删除文件之前,最好先用l s命令看一下,确认它们是所要删除的文件。
e x e c选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个,最后是一个分号。
为了使用e x e c选项,必须要同时使用p r i n t选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的- e x e c选项中
# find . -type f -exec ls -l { } ;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出。
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm { } ;
记住,在s h e l l中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如m v或r m命令时,可以使用- e x e c选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以. L O G结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.conf" -mtime +5 -ok rm { } ;
< rm ... ./conf/httpd.conf > ? n
按y键删除文件,按n键不删除。
任何形式的命令都可以在- e x e c选项中使用。
在下面的例子中我们使用g r e p命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name "passwd*" -exec grep "sam" { } ;
sam:x:501:501::/usr/sam:/bin/bash
find命令的例子
查找当前用户主目录下的所有文件,下面两种方法都可以使用:
$ find $HOME -print
$ find ~ -print
为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,可以用:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
为了查找系统中所有属于root组的文件,可以用:
$find . -group root -exec ls -l { } ;
-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1
下面的find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。该命令只检查三位数字,所以相应文件的后缀不要超过999。
先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok
rm { } ;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
为了查找当前文件系统中的所有目录并排序,可以用:
$ find . -type d &line;sort
为了查找系统中所有的r m t磁带设备,可以用:
$ find /dev/rmt -print
2.xargs
在使用find命令的- e x e c选项处理匹配到的文件时, f i nd命令将所有匹配到的文件一起传递给e x e c执行。但有些系统对能够传递给e x e c的命令长度有限制,这样在f i nd命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是x a rg s命令的用处所在,特别是与f i nd命令一起使用。
find命令把匹配到的文件传递给x a rg s命令,而x a rg s命令每次只获取一部分文件而不是全部,不像- e x e c选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用- e x e c选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用x a rg s命令则只有一个进程。另外,在使用x a rg s命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来看看x a rg s命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用x a rg s命令来测试它们分别属于哪类文件
#find . -type f -print &line; xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text
......
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
$ find / -name "core" -print &line; xargs echo "" >/tmp/core.log
上面这个执行太慢,我改成在当前目录下查找
#find . -name "file*" -print &line; xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print &line; xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
用g r e p命令在所有的普通文件中搜索hostname这个词:
# find . -type f -print &line; xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
用g r e p命令在当前目录下的所有普通文件中搜索hostnames这个词:
# find . -name * -type f -print &line; xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
注意,在上面的例子中, 用来取消find命令中的*在s h e l l中的特殊含义。
3.find命令配合使用e x e c和x a rg s可以使用户对所匹配到的文件执行几乎所有的命令。
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册
a.使用name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。
可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录$ H O M E中查找文件名符合* . t x t的文件,使用~作为' p a t h n a m e参数,波浪号~代表了你的$ H O M E目录。
$ find ~ -name "*.txt" -print
想要在当前目录及子目录中查找所有的‘ * . t x t’文件,可以用:
$ find . -name "*.txt" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
想要在/ e t c目录中查找文件名以h o s t开头的文件,可以用:
$ find /etc -name "host*" -print
想要查找$ H O M E目录中的文件,可以用:
$ find ~ -name "*" -print 或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
$ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是. t x t的文件,下面的命令就能够返回名为a x 3 7 . t x t的文件:
$find . -name "[a-z][a-z][0--9][0--9].txt" -print
b.用perm选项
按照文件权限模式用- p e r m选项。
按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
如在当前目录下查找文件权限位为7 5 5的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
# ls -l
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-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 . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode
c.忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用- p r u ne选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同时使用了- d e p t h选项,那么- p r u ne选项就会被find命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -path "/apps/bin" -prune -o -print
补充:
使用find查找文件的时候怎么避开某个文件目录
比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件
find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 &line;&line; 类似如果 -path
"/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune
,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print
返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为
if -path "/usr/sam" then
-prune
else
-print
避开多个文件夹
代码
find /usr/sam ( -path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -print
圆括号表示表达式的结合。
表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后
代码
#find /usr/sam (-path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -name "temp" -print
4.使用user和nouser选项
按文件属主查找文件,如在$ H O M E目录中查找文件属主为sam的文件,可以用:
$ find ~ -user sam -print
在/ e t c目录下查找文件属主为u u c p的文件:
代码
$ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用- n o u s e r选项。这样就能够找到那些属主在/ e t c / p a s s w
d文件中没有有效帐户的文件。在使用- n o u s e r选项时,不必给出用户名; find命令能够为你完成相应的工作。
例如,希望在/ h o m e目录下查找所有的这类文件,可以用:
$ find /home -nouser -print
5、使用group和nogroup选项
就像u s e r和n o u s e r选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/ a p p s目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用n o g r o u p选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print
6、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用m t i m e,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用m t i m e选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
代码
$ find / -mtime -5 -print
为了在/ v a r / a d m目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
7、查找比某个文件新或旧的文件
如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用- n e w e r选项。它的一般形式为:
代码
newest_file_name ! oldest_file_name
其中,!是逻辑非符号。
查找更改时间比文件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
查找更改时间在比temp文件新的文件:
$ find . -newer temp -print
8、使用type选项
在/ e t c目录下查找所有的目录,可以用:
$ find /etc -type d -print
在当前目录下查找除目录以外的所有类型的文件,可以用:
$ find . ! -type d -print
在/ e t c目录下查找所有的符号链接文件,可以用
代码
$ find /etc -type l -print
9、使用size选项
可以按照文件长度来查找文件,这里所指的文件长度既可以用块( b l o c k)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:
$ find . -size +1000000c -print
在/home/apache目录下查找文件长度恰好为1 0 0字节的文件:
$ find /home/apache -size 100c -print
在当前目录下查找长度超过1 0块的文件(一块等于5 1 2字节):
代码
$ find . -size +10 -print
10、使用depth选项
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用d e p t h选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
在下面的例子中, find命令从文件系统的根目录开始,查找一个名为C O N . F I L E的文件。
它将首先匹配所有的文件然后再进入子目录中查找。
$ find / -name "CON.FILE" -depth -print
11、使用mount选项
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的m o u n t选项。
从当前目录开始查找位于本文件系统中文件名以X C结尾的文件:
$ find . -name "*.XC" -mount -print
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( N F S ),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0 G字节以上的文件系统)。
find命令的一般形式为:
find pathname -options [-print -exec -ok ...]
让我们来看看该命令的参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' command' { } ;,注意{ }和;之间的空格。
-ok: 和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find命令选项
-name:按照文件名查找文件。
-perm:按照文件权限来查找文件。
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有- a t i m e和- c t i m e选项,但它们都和- m t i m e选项。
-nogroup:查找无有效所属组的文件,即该文件所属的组在/ e t c / g r o u p s中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d中不存在。
-newer file1 ! file2:查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/ e t c / f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统m o u n t点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
(在有些操作系统中只允许- e x e c选项执行诸如l s或ls -l这样的命令)。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行r m命令删除文件之前,最好先用l s命令看一下,确认它们是所要删除的文件。
e x e c选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个,最后是一个分号。
为了使用e x e c选项,必须要同时使用p r i n t选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的- e x e c选项中
# find . -type f -exec ls -l { } ;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出。
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm { } ;
记住,在s h e l l中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如m v或r m命令时,可以使用- e x e c选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以. L O G结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.conf" -mtime +5 -ok rm { } ;
< rm ... ./conf/httpd.conf > ? n
按y键删除文件,按n键不删除。
任何形式的命令都可以在- e x e c选项中使用。
在下面的例子中我们使用g r e p命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name "passwd*" -exec grep "sam" { } ;
sam:x:501:501::/usr/sam:/bin/bash
find命令的例子
查找当前用户主目录下的所有文件,下面两种方法都可以使用:
$ find $HOME -print
$ find ~ -print
为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,可以用:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
为了查找系统中所有属于root组的文件,可以用:
$find . -group root -exec ls -l { } ;
-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1
下面的find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。该命令只检查三位数字,所以相应文件的后缀不要超过999。
先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok
rm { } ;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
为了查找当前文件系统中的所有目录并排序,可以用:
$ find . -type d &line;sort
为了查找系统中所有的r m t磁带设备,可以用:
$ find /dev/rmt -print
2.xargs
在使用find命令的- e x e c选项处理匹配到的文件时, f i nd命令将所有匹配到的文件一起传递给e x e c执行。但有些系统对能够传递给e x e c的命令长度有限制,这样在f i nd命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是x a rg s命令的用处所在,特别是与f i nd命令一起使用。
find命令把匹配到的文件传递给x a rg s命令,而x a rg s命令每次只获取一部分文件而不是全部,不像- e x e c选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用- e x e c选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用x a rg s命令则只有一个进程。另外,在使用x a rg s命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来看看x a rg s命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用x a rg s命令来测试它们分别属于哪类文件
#find . -type f -print &line; xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text
......
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
$ find / -name "core" -print &line; xargs echo "" >/tmp/core.log
上面这个执行太慢,我改成在当前目录下查找
#find . -name "file*" -print &line; xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print &line; xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
用g r e p命令在所有的普通文件中搜索hostname这个词:
# find . -type f -print &line; xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
用g r e p命令在当前目录下的所有普通文件中搜索hostnames这个词:
# find . -name * -type f -print &line; xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
注意,在上面的例子中, 用来取消find命令中的*在s h e l l中的特殊含义。
3.find命令配合使用e x e c和x a rg s可以使用户对所匹配到的文件执行几乎所有的命令。
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册
a.使用name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。
可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录$ H O M E中查找文件名符合* . t x t的文件,使用~作为' p a t h n a m e参数,波浪号~代表了你的$ H O M E目录。
$ find ~ -name "*.txt" -print
想要在当前目录及子目录中查找所有的‘ * . t x t’文件,可以用:
$ find . -name "*.txt" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
想要在/ e t c目录中查找文件名以h o s t开头的文件,可以用:
$ find /etc -name "host*" -print
想要查找$ H O M E目录中的文件,可以用:
$ find ~ -name "*" -print 或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
$ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是. t x t的文件,下面的命令就能够返回名为a x 3 7 . t x t的文件:
$find . -name "[a-z][a-z][0--9][0--9].txt" -print
b.用perm选项
按照文件权限模式用- p e r m选项。
按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
如在当前目录下查找文件权限位为7 5 5的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
# ls -l
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-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 . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode
c.忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用- p r u ne选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同时使用了- d e p t h选项,那么- p r u ne选项就会被find命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -path "/apps/bin" -prune -o -print
补充:
使用find查找文件的时候怎么避开某个文件目录
比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件
find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 &line;&line; 类似如果 -path
"/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune
,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print
返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为
if -path "/usr/sam" then
-prune
else
避开多个文件夹
代码
find /usr/sam ( -path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -print
圆括号表示表达式的结合。
表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后
代码
#find /usr/sam (-path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -name "temp" -print
4.使用user和nouser选项
按文件属主查找文件,如在$ H O M E目录中查找文件属主为sam的文件,可以用:
$ find ~ -user sam -print
在/ e t c目录下查找文件属主为u u c p的文件:
代码
$ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用- n o u s e r选项。这样就能够找到那些属主在/ e t c / p a s s w
d文件中没有有效帐户的文件。在使用- n o u s e r选项时,不必给出用户名; find命令能够为你完成相应的工作。
例如,希望在/ h o m e目录下查找所有的这类文件,可以用:
$ find /home -nouser -print
5、使用group和nogroup选项
就像u s e r和n o u s e r选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/ a p p s目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用n o g r o u p选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print
6、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用m t i m e,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用m t i m e选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
代码
$ find / -mtime -5 -print
为了在/ v a r / a d m目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
7、查找比某个文件新或旧的文件
如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用- n e w e r选项。它的一般形式为:
代码
newest_file_name ! oldest_file_name
其中,!是逻辑非符号。
查找更改时间比文件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
查找更改时间在比temp文件新的文件:
$ find . -newer temp -print
8、使用type选项
在/ e t c目录下查找所有的目录,可以用:
$ find /etc -type d -print
在当前目录下查找除目录以外的所有类型的文件,可以用:
$ find . ! -type d -print
在/ e t c目录下查找所有的符号链接文件,可以用
代码
$ find /etc -type l -print
9、使用size选项
可以按照文件长度来查找文件,这里所指的文件长度既可以用块( b l o c k)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:
$ find . -size +1000000c -print
在/home/apache目录下查找文件长度恰好为1 0 0字节的文件:
$ find /home/apache -size 100c -print
在当前目录下查找长度超过1 0块的文件(一块等于5 1 2字节):
代码
$ find . -size +10 -print
10、使用depth选项
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用d e p t h选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
在下面的例子中, find命令从文件系统的根目录开始,查找一个名为C O N . F I L E的文件。
它将首先匹配所有的文件然后再进入子目录中查找。
$ find / -name "CON.FILE" -depth -print
11、使用mount选项
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的m o u n t选项。
从当前目录开始查找位于本文件系统中文件名以X C结尾的文件:
$ find . -name "*.XC" -mount -print
2007年9月5日星期三
HTML里的valign、align
使用 VAlign 属性指定由 HtmlTableCell 类的实例所表示的单元格内容的垂直对齐方式。align是左右对齐方式。
“VALIGN"意思 -- vertical alignment 垂向对齐方法
其值可以是top -- 顶部;或middle -- 中部;或bottom-- 底部;或baseline -- 基线。默认中部--middle。
align是左右对齐方式。
其值:align="middle"内容居中、 align="left" 内容居左、 align="rigth" 内容居右。
HTML Quick List
“VALIGN"意思 -- vertical alignment 垂向对齐方法
其值可以是top -- 顶部;或middle -- 中部;或bottom-- 底部;或baseline -- 基线。默认中部--middle。
align是左右对齐方式。
其值:align="middle"内容居中、 align="left" 内容居左、 align="rigth" 内容居右。
HTML Quick List
订阅:
博文 (Atom)