find命令精通Word文件下载.docx
- 文档编号:19879603
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:9
- 大小:21.52KB
find命令精通Word文件下载.docx
《find命令精通Word文件下载.docx》由会员分享,可在线阅读,更多相关《find命令精通Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
./REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
./REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java
..
如果您从本文剪切并粘贴来运行该find命令,您可能需要使用自己的键盘替换双引号(“”)才能得出正确的结果。
以下命令将执行相同的操作。
在这两种情况下,您都需要对通配符进行转义以确保它传递到find命令并且不由shell解释。
因此,请将您的搜索字符串放到引号里,或者在它前面加上反斜线:
find.-name\*.java
尽管find的所有参数均为可选,但是如果您未指定从哪里开始搜索,搜索默认将在当前目录中开始。
如果您不指定要匹配的测试连接、选项或值,您的结果将不完整或者无区别。
运行以下三个find命令将得出同样的结果—当前目录和所有子目录中的所有文件(包括隐藏文件)的完整清单:
find
find.
find.-print
这类似于运行一个带-la选项的ls命令。
如果您希望上述命令的输出包含完整的路径名(或许是为了备份),您将需要指定起始目录的完整路径:
find/home/bluher-name\*.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java
/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java/
...
您还可以在搜索字符串中指定多个起始目录。
如果以具有相应权限的用户身份运行,以下命令将下到/usr、/home/tmp目录查找所有jar文件:
find/usr/home/tmp-name"
*.jar"
但是,如果您没有相应的权限,您在开始浏览许多系统目录时将生成错误消息。
以下是一个示例:
find:
/tmp/orbit-root:
Permissiondenied
您可以通过附加您的搜索字符串来避免混乱的输出,如下所示:
2>
/dev/null
这会将所有错误消息发送到空文件,因此提供清理器输出。
默认情况下,find是区分大小写的。
对于不区分大小写的find,将-iname测试替换为-name测试。
finddownloads-iname"
*.gif"
downloads/.xvpics/Calendar05_enlarged.gif
downloads/lcmgcfexsmall.GIF
除文件名外,您还可以按类型搜索文件。
例如,您可以使用以下命令查找一个目录中的所有子目录:
find.-typed
您可以使用以下命令查找您的/usr目录中的所有符号链接:
find/usr-typel
这可能会列出3,000多个链接。
以下的任何一个命令使用根权限运行都将列出/usr目录中的链接以及它所指向的文件:
#find/usr/bin-typel
-name"
z*"
-execls-l{}\;
lrwxrwxrwx1rootroot8Dec1223:
17/usr/bin/zsh->
/bin/zsh
lrwxrwxrwx1rootroot5Dec1223:
17/usr/bin/zless->
zmore
lrwxrwxrwx1rootroot9Dec1223:
17/usr/bin/zcat->
/bin/zcat
find/usr/bin-typel
-ls
但是,第二个更短的命令将列出更多的文件,以及目录和inode信息:
在本文后面的部分中,我们将讨论-exec和-ls操作的用法。
其他find可以找到的文件类型包括:
•b—块(缓存)特殊
•c—字符(未缓存)特殊
•p—命名管道(FIFO)
•s—套接字
使用根作为find命令的起点会极大地降低系统的速度。
如果您必须运行这样一个命令,您可以在非高峰时段或晚上运行它。
您可以使用以下语法将输出重定向到一个文件:
/
-print>
masterfilelist.out
如果您错误地输入一个find命令,生成大量不必要的输出,只需按CTRL-C中断该命令,这将停止最近执行的命令。
在具多个文件系统的企业网络上,限制find查找的文件也是一个特别好用的方法。
尽可能多地使用选项和测试以减少系统上的负载。
用于此目的的两个最有用的选项是-xdev和-mount。
它们通过阻止find下到其他文件系统(如MS-DOS、CD-ROM或AFS)上的目录中缩短了搜索范围。
这将搜索限制为同一类型的文件系统作为起始目录。
如果运行mount命令,双引导系统上的用户可以使用这些选项。
假设涉及Windows分区,您可以使用类似以下的命令安装它:
mount-tvfat/dev/sda1/mnt/msdos
您使用的实际命令取决于您的系统设置。
您可以通过运行df或执行以下命令验证该分区已安装:
find/mnt/msdos-name"
*.txt"
/dev/null
您应该看到MSWindows分区上列出了很多的文件。
现在,运行以下带-mount或-xdev选项的命令:
find/-name"
-mount2>
或者
-xdev2>
还可以使用-fstype测试明确告知find在哪个文件系统中查找,如以下示例中所示:
-fstypevfat2>
查找时间
find命令有几个用于根据您系统的时间戳搜索文件的选项。
这些时间戳包括
•mtime—文件内容上次修改时间
•atime—文件被读取或访问的时间
•ctime—文件状态变化时间
mtime和atime的含义都是很容易理解的,而ctime则需要更多的解释。
由于inode维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则inode数据也将变化。
这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。
由于在这些情况下,文件内容不会被读取或修改,因此mtime和atime不会改变,但ctime将发生变化。
这些时间选项都需要与一个值n结合使用,指定为-n、n或+n。
•-n返回项小于n
•+n返回项大于n
•n返回项正好与n相等
下面,我们来看几个例子,以便于理解。
以下命令将查找在最近1小时内修改的所有文件:
find.-mtime-1
./plsql/FORALLSample
./plsql/RegExpDNASample
/plsql/RegExpSample
用1取代-1运行同一命令将查找恰好在1小时以前修改的所有文件:
find.-mtime1
上述命令不会生成任何结果,因为它要求完全吻合。
以下命令查找1个多小时以前修改的所有文件:
find.-mtime+1
默认情况下,-mtime、-atime和-ctime指的是最近24小时。
但是,如果它们前面加上了开始时间选项,则24小时的周期将从当日的开始时间算起。
您还可以使用mmin、amin和cmin查找在不到1小时的时间内变化了的时间戳。
如果您在登录到您的帐户后立即运行以下命令,您将找到在不到1分钟以前读取的所有文件:
find.-amin-1
./.bashrc
/.bash_history
./.xauthj5FCx1
应该注意的是,使用find命令查找文件本身将更改该文件的访问时间作为其元数据的一部分。
您还可以使用-newer、-anewer和–cnewer选项查找已修改或访问过的文件与特定的文件比较。
这类似于-mtime、-atime和–ctime。
•-newer指内容最近被修改的文件
•-anewer指最近被读取过的文件
•-cnewer指状态最近发生变化的文件
要查找您的主目录中自上一个tar文件以来以某种方式编辑过的所有文件,使用以下命令:
find.-newerbackup.tar.gz
按大小查找文件
-size选项查找满足指定的大小条件的文件。
要查找所有大于5MB的用户文件,使用
find/-size+5000000c2>
/var/log/lastlog
/var/log/cups/access_log.4
/var/spool/mail/bluher
结尾的“c”以字节为单位报告我们的结果。
默认情况下,find以512字节块的数量报告大小。
如果我们将“c”替换为“k”,我们还会看到以千字节的数量报告的结果,如果使用“w”,则会看到以两字节字的数量报告的结果。
-size选项经常用于搜索所有零字节文件并将它们移至/tmp/zerobyte文件夹。
以下命令恰好可以完成这一任务:
findtest-typef-size0-execmv{}/tmp/zerobyte\;
-exec操作允许find在它遇到的文件上执行任何shell命令。
在本文的后面部分,您将看到其用法的更多示例。
大括号允许移动每个空文件。
选项-empty还可用于查找空文件:
findtest-empty
test/foo
test/test
按权限和所有者查找
要监视您的系统安全离不开find命令。
您可以使用符号或八进制表示法查找面向广大用户开放的文件,如下所示:
find.-typef-perma=rwx-execls-l{}\;
find.-typef-perm777-execls-l{}\;
-rwxrwxrwx1bluherusers0May2414:
14./test.txt
在这一部分中,在上面和下面的命令中,我们使用了-execls-l操作,因此,您可以看到返回的文件的实际权限。
以下命令将查找可由“other”和组写入的文件:
findplsql-typef-perm-ug=rw-execls-l{}\;
或者
findplsql-typef-perm-220-execls-l{}\;
/dev/null
-rw-rw-rw-1bluherusers4303Jun
7
2004plsql/FORALLSample/doc/otn_new.css
-rw-rw-rw-1bluherusers10286Jan12
2005plsql/FORALLSample/doc/readme.html
-rw-rw-rw-1bluherusers22647Jan12
2005plsql/FORALLSample/src/config.sql
下一个命令将查找由用户、组或二者共同写入的文件:
findplsql-typef-perm/ug=rw-execls-l{}\;
/dev/null,or,
findplsql-typef-perm/220-execls-l{}\;
-rw-r--r--1bluherusers21473May
316:
02plsql/regexpvalidate.zip
您可能会看到以下命令在Web和较早的手册中引用过:
find.-perm+220-execls-l{}\;
/dev/null
+符号的作用与/符号相同,但是现在新版GNUfindutils中不支持使用该符号。
要查找您的系统上所有人都可以写入的所有文件,使用以下命令:
find/-wholename'
/proc'
-prune
-o
-typef-perm-0002-execls-l{}\;
2004/home/bluher/plsql/FORALLSample/doc/otn_new.css
2005/home/bluher/plsql/FORALLSample/doc/readme.html
第4个权限将在稍后进行讨论,但最后一个字段中的“2”是文件权限中的“other”字段,也称为写入位。
我们在权限模式0002前面使用了破折号,以指明我们希望看到为other设置了写权限的文件,无论其他权限设置为什么。
上述命令还引入了三个新概念。
针对文件模式“/proc”使用-wholename测试,如果该模式已找到,-prune可防止find下到该目录中。
布尔类型“-o”使find可以针对其他目录处理该命令的其余部分。
由于每个表达式之间有一个假设的隐式and运算符(-a),因此,如果左侧的表达式计算结果为false,and之后的表达式将不进行计算;
因此需要-o运算符。
Find还支持布尔类型-not、!
,就像使用括号强行优先一样。
系统管理员经常使用find通过用户或组的名称或ID搜索特定用户或组的常规文件:
[root]$
find/-typef-userbluher-execls-ls{}\;
下面是这样一个命令的高度精简的输出示例:
4-rw-r--r--1bluherusers48May
103:
09/home/bluher/public_html/.directory
4-rw-r--r--1bluherusers925May
09/home/bluher/.profile
您还可以使用find按组查找文件:
[root]$find/-typef-groupusers
find/-typed-gid100
该命令将列出由ID为100的组拥有的目录。
要找到相应的uid或gid,您可以针对/etc/passwd或/etc/group文件运行more或cat命令。
除了查找特定已知用户和组的文件外,您还会发现它对于查找没有这些信息的文件也很有用。
下一个命令将识别未列在/etc/passwd或/etc/group文件中的文件:
find/-nouser-o-nogroup
上述命令可能不会在您的系统上生成实际的结果。
但是,它可用于识别或许在经常移动后没有用户或组的文件。
好了,现在我们可以解决本部分开始时提到的格外重要的权限了。
SGID和SUID是特殊访问权限标志,可以分配给基于UNIX的操作系统上的文件和目录。
设置它们是为了允许访问计算机系统的普通用户使用临时提升的权限执行二进制可执行文件。
find/
\(-perm-2000-o-perm-4000\)-ls
167901
12-rwsr-xr-x
1root
root
9340Jun16
2006/usr/bin/rsh
167334
12-rwxr-sr-x
tty
10532May
4
2007/usr/bin/wall
在上述命令中,您可以看到转义括号的使用。
您还可以看到权限的不同。
第一个文件设置了SGID权限,第二个文件设置了SUID权限。
上述命令中的最后的操作与带-execls-dils操作的find效果类似。
控制find
与Linux中的许多命令不同,find不需要-r或-R选项即可下到子目录中。
它默认情况下就这样操作。
但是,有时您可能希望限制这一行为。
因此,选项-depth、-maxdepth和-mindepth以及操作-prune就派上用场了。
我们已经看到了-prune是多么有用,下面让我们来看看-depth、-maxdepth和-mindepth选项。
-maxdepth和-mindepth选项允许您指定您希望find搜索深入到目录树的哪一级别。
如果您希望find只在目录的一个级别中查找,您可以使用maxdepth选项。
通过运行以下命令在目录树的前三个级别中查找日志文件,您可以看到-maxdepth的效果。
使用该选项较之不使用该选项所生成的输出要少得多。
find/-maxdepth3-name"
*log"
您还可以让find在至少下至目录树三个级别的目录中查找:
find/-mindepth3-name"
-depth选项确保先在一个目录中进行查找,然后才在其子目录中进行查找。
以下命令提供了一个示例:
find-name"
*test*"
-depth
./test/test
./test
./localbin/test
./localbin/test_shell_var
./localbin/test.txt
./test2/test/test
./test2/test
./test2
find世界
我们已经看过了find命令的一些更加有用以及有点难懂的功能,但是find还可以执行更多的任务。
例如,有多个选项可以使find与较低的UNIX版本和其他操作系统相兼容并允许您执行打印输出到多个文件等操作。
阅读本文后,您现在已经有了理解find参考指南的背景,我鼓励您深入研究这一强大、有用的工具。
SherylCalish是一位专攻Linux的IT顾问。
她以前就职于BlueHeronConsulting,现在是EquityBuild的IT总监。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- find 命令 精通