ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:21.56KB ,
资源ID:10695601      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10695601.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文件链接ln和文件查找.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文件链接ln和文件查找.docx

1、文件链接ln和文件查找Linux的文件类型Linux操作系统支持的文件类型有:普通文件、目录文件、设备文件以及符号链接文件。1) 普通文件:包括文本文件、数据文件、可执行的二进制程序等。2) 目录文件:简称为目录,Linux 中把目录看成一种特殊的文件,利用它构成文件系统的分层树型结构。每个目录文件中至少包括两个文件: “.”表示上一级目录,“.”表示该目录本身。3) 设备文件:设备文件是一种特别文件,Linux 系统用其标识各个设备驱动器,核心使用它们与硬件设备通信。有两类特别设备文件:字符设备文件和块设备文件。4) 符号链接:一种特殊文件,存放的数据是文件系统中通向某个文件的路径。当调用符

2、号链接文件时,系统会自动访问保存在文件中的路径。inode(index node) 索引节点、文件指标在Unix/Linux系统里,每个文件都有一个伴随它的inode(indentification node的缩写)。这个inode的值必须是系统中独一无二的。它的用途是作为存取文件的索引。您可以用系统指令l s -i将现行工作目錄下的各个文件之inode內含值印出。inode的內部储存了许多重要的信息,例如: 文件所有人的识別码 文件型态 文件存取权限 文件存取时间 文件案有几个连接 文件的大小 文件的实际储存位址从使用者的观点来看,用戶用文件名来辨识Unix/Linux的文件;但是以核心程式

3、的立场观之,则是透过inode来使用文件。inode有两种存在状态,在未被使用时,inode被放在磁碟中所谓的inode列表(inode list):当它要被参考时,核心程式会将它载入至主记忆內,此时的inode被称作in-core inode,以下是inode以C语言的结构(structure)所表示的情形:struct inodeint imode; /*存取权限 */char i_nl ink; /*文件连接数 */char i_uid; /*拥有者识別码 */char i_gid; /*使用群识別码 */long i_size; /*文件的长度 */int i_addr13); /*文

4、件所在位置 */int i_atime2); /*最近一次存取时间*/int i_mtime(2;/*最近一次修改时间*/【参考】disk inode, in-core inode, inode list,kernel。任何文件的inode都会对应到一个inode table,而这个inode table就是记录著这个文件的一些相关信息。从上面的图例来看,File 1的inode为168因此将168对应到inode table时,里头就会记载著这个文件的相关內容,比如文件的拥有人、拥有群组信息,相关的文件权限、或者文件的最后更动日期等等。我们可以使用ls -i来查看文件的inode信息,加上-

5、i参数代表显示inode的意思:文件链接ln和文件查找文件链接lnLinux 具有为一个文件起多个名字的功能,称为链接。这样只要对一个文件修改,就可以完成对所有目录下相应链接文件的修改。简单的来说,ln就像是各位在Windows系统中创建捷径的意思,但是又不像Windows创建捷径那樣的单纯容易!ln 命令用来创建链接,语法为:ln 源文件 目标文件ln 源文件1 源文件2 目标文件在第一种语法格式中,如果目标文件是到某一目录文件的路径,源文件会链接到此目录下,文件名不变;如果目标文件不是到某一目录文件的路径,源文件会链接到此目标文件,并覆盖已经存在的同名文件。在第二种语法格式中,所有的源文件

6、都被链接到目标文件该目标文件必须是目录文件。所有源文件的名字都不变。文件链接有两种形式,即硬链接和符号链接。 硬链接默认情况下,ln 命令创建硬链接。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件链接数为1。ln 命令会增加链接数,rm 命令会减少链接数。一个文件除非链接数为0,否则不会物理地从文件系统中被删除。对硬链接有如下限制:不能对目录文件作硬链接;不能在不同的文件系统之间作硬链接。 符号链接符号链接也称软链接,是将一个路径名链接到一个文件,事实上,它只是一个文本文件,其中包含它提供链接的另一个文件的路径名。另一个文件是实际包含所有数据的文件。所有读写文件内容的

7、命令,当它们被用于符号链接时,将沿着链接方向前进去访问实际的文件。如果给 ln 命令加上 s 选项,则建立符号链接。例如:ln -s source destination符号链接没有硬链接的限制,可以对目录文件作符号链接,也可以在不同文件系统之间作符号链接。文件类型file如果你想要知道某个文件的基本资料,例如是属于 ASCII 或者是 data 文件,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等的信息,就可以利用 file 这个指令来查看rootlinux # file /.bashrc/root/.bashrc: ASCII text = 告

8、诉我们是 ASCII 的纯文字!文件的查找注意:通常 find 不很常用的!因为速度慢。通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻!为什么呢?因为 whereis 与 locate 是利用数据库来查找,所以相当的快速,而且并没有实际的搜寻硬盘,比较省时间。find 命令find 命令用来查找文件和目录的位置。该命令的语法为:find 路径名 选项find PATH option action 参数1. 与时间有关的参数-atime n n 为数字,意义为在 n 天之前的一天之内被 access 过的文件;-ctime n n 为数

9、字,意义为在 n 天之前的一天之内被 change 过状态的文件;-mtime n n 为数字,意义为在 n 天之前的一天之内被 modification 过的文件;-newer file file 为一个存在的文件,意思是说,只要文件比 file 还要新,就会被列出来2. 与使用者或群组名称有关的参数-uid n n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。-gid n n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在/etc/group,相关的介绍我们会

10、第四篇说明-user name name 为使用者帐号名称喔!例如 dmtsai -group namename 为群组名称,例如 users ;-nouser 寻找文件的拥有者不存在 /etc/passwd 的人!-nogroup 寻找文件的拥有群组不存在于 /etc/group 的文件!当您自行安装软体时,很可能该软体的属性当中并没有文件拥有者,这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。3. 与文件权限及名称有关的参数-name filename搜寻文件名称为 filename 的文件;-size +-SIZE搜寻比 SIZE 还要大(+)或小(-)的

11、文件。这个 SIZE 的规格有c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB还要大的文件,就是 -size +50k -type TYPE 搜寻文件的类型为 TYPE 的,类型主要有一般正规文件 (f),装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。-perm mode 搜寻文件属性刚好等于 mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !-perm -mode 搜寻文件属性必须要全部囊括 mode 的属性的文件,举例来说,我

12、们要搜寻 -rwxr-r- ,亦即 0744 的文件,使用 -perm -0744,当一个文件的属性为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr-r- 的属性了。-perm +mode 搜寻文件属性包含任一 mode 的属性的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-也会被列出来,因为他有 -rw. 的属性存在!4. 额外可进行的动作-exec command command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。-print 将结

13、果列到萤幕上,这个动作是预设动作!其中,常用的选项有:-print:显示输出查找到的结果。如果未指定任何选项,则系统默认是 -print。如 find命令的最基本的用法就是列出指定目录下的所有文件和子目录:# find /usr -print-name:按文件名查找。-size:按文件大小查找。例如,下面的命令将查找/usr目录下超过100k的文件:# find /usr -size 100k-user:按文件主查找。-type: 按文件类型查找。常见的类型有:b块特别文件c字符特别文件。f普通文件l符号链接文件d目录文件# 不指定匹配表达式,显示所有文件# 递归显示当前目录的文件列表$ fi

14、nd# 递归显示 / 目录的文件列表$ find /# 递归显示 / 目录的文件列表(仅限于3层目录)$ find / -maxdepth 3# 递归显示 / 目录的文件列表(仅限于 / 文件系统)$ find / -xdev# 递归显示 /home、/www、/srv 目录的文件列表$ find /home /www /srv# 按文件名/路径名查找# 查找特定的文件名$ find -name myfile$ find -maxdepth 2 -name symfony# 使用通配符查找特定的文件名$ find -name d*$ find -name ?$ find -name afd*$

15、 find -iname a-z*$ find -name ch0-20-9.txt*# 匹配文件路径名$ find -path *server./vbird/server./server$ find -path *server12./server1./server2./server1/server2./server2/server2# 以正则表达式匹配文件路径名$ find -regex .*$ find -regex .*ch0.*./ch01./ch00./vbird/server/1000results/ch09-01.jpg$ find -regex .*ch0-9+./ch01./

16、ch21./ch00./ch333./ch1./ch41$ find -regex .*ch0-9+.txt./ch1.txt./ch24.txt# 按文件属性查找# 只查找普通文件$ find . -type f# 只查找符号链接文件$ find . -type l# 查找硬连接数大于 1 的文件或目录$ find /home -links +1# 查找 /tmp 目录下小于 10M 的文件$ find /tmp -size -10M# 查找 /home 目录下大于 1G 的文件$ find /home -size +1G# 查找系统中为空的文件或者目录$ find / -empty# 查找

17、在 /www 中最后10分钟访问过的文件$ find /www -amin -10# 查找在 /www 中最后2天访问过的文件$ find /www -atime -2# 查找在 /home 下最近2天内改动过的文件$ find /home -mtime -2# 列出被改动过后 2 日内被存取过的文件或目录$ find /home -used -2# 列出被改动过后 90 日前被存取过的文件或目录$ find /home -used +90# 列出 /home 目录中属于用户 osmond 的文件或目录$ find /home -user osmond# 列出 /home 目录中 UID 大于

18、 501 的文件或目录$ find /home -uid +501# 列出 /home 目录中组为 osmond 的文件或目录$ find /home -group osmond# 列出 /home 目录中 GID 为 501 的文件或目录$ find /home -gid 501# 列出 /home 目录中不属于本地用户的文件或目录$ find /home -nouser# 列出 /home 目录中不属于本地组的文件或目录$ find /home -nogroup# 精确查找权限为 664 的文件或目录$ find . -perm 664# 查找权限至少为 664 的文件或目录$ find

19、. -perm -664# 使用逻辑运算构造复杂表达式# 查找 /tmp 目录下21天之前访问过的大于 10G 的文件$ find /tmp -size +10M -a -atime +21# 查找 / 目录下属主为 jjheng 或 osmond 的文件$ find / -user jjheng -o -user osmond# 查找 /tmp 目录下的属主不是 osmond 的文件$ find /tmp ! -user osmond# 在 /mnt 下查找 *.txt 且文件系统类型不为 vfat 的文件$ find /mnt -name *.txt ! -fstype vfat# 在 /

20、tmp 下查找名为 l 开头且类型为符号链接的文件$ find /tmp -name l* -type l# 查找以 server 开头的目录名$ find . -type d -name server*# 找出 /var/log 目录下所有的前5天修改过的.log 文件$ find /var/log -name *.log -mtime +5# 按文件样本查找# 查找所有比 FILE1 的访问时间新的文件$ find -anewer FILE1# 查找所有比 FILE2 的访问时间旧的文件$ find ! -anewer FILE2# 查找所有比 FILE1 的访问时间新的# 且比 FILE

21、2 的访问时间旧的文件$ find -anewer FILE1 ! -anewer FILE2# 查找所有比 FILE1 的内容修改时间新的文件$ find -newer FILE1# 查找所有比 FILE2 的内容修改时间旧的文件$ find ! -newer FILE2# 查找所有比 FILE1 的内容修改时间新的# 且比 FILE2 的内容修改时间旧的文件$ find -newer FILE1 ! -newer FILE2# 查找与 FILE 具有相同 i-node 的文件(硬链接)$ find -samefile FILE -ls# 对查找到的文件实施命令操作# 查找并列出当前目录下不

22、安全的文件(世界可读写执行)$ find . -perm -007 -exec ls -l ;# 查找 logs 目录下的所有的 .log 文件并查看它的详细信息$ find logs -name *.log -type f -exec ls -l ;# 查找当天修改过的普通文件$ find . -type f -mtime -1 -exec ls -l ;# 查找当前目录下的.php文件并用grep过滤出包含include的行$ find . -name *.php -exec grep include ; -print# 查找并删除当前目录及其子目录下所有扩展名为 .tmp 的文件$ fi

23、nd . -name *.tmp -exec rm ;# 在logs目录中查找7天之内未修改过的文件并在删除前询问$ find logs -type f -mtime +7 -exec -ok rm ;# 查询并删除一周以来从未访问过的以 .o 结尾或名为 a.out# 且不存在于 nfs 文件系统中的所有文件$ find / ( -name a.out -o -name *.o ) -atime +7 ! -fstype nfs -exec rm ;# 查询并删除当前目录及其子目录下所有的空目录$ find . -depth -type d -empty -exec rmdir ;# 将de

24、fault目录下的文件由GBK编码转换为UTF-8编码# 目录结构不变,转码后的文件保存在utf/default目录下# From: $ find default -type d -exec mkdir -p utf/ ;$ find default -type f -exec iconv -f GBK -t UTF-8 -o utf/ ;# 下面 find 命令的书写形式均等价$ find -name *.sh -exec cp /tmp ;$ find -name *.sh -exec cp /tmp ;$ find -name *.sh -exec cp /tmp ;$ find -na

25、me *.sh -exec cp /tmp ;$ find -name *.sh -exec cp /tmp ;$ find -name *.sh -exec cp /tmp ;# 在查找中排除指定的目录# 显示当前目录树$ tree -F -L 2.|- bin/| |- switch-lang.sh*| - sys2wiki.sh*|- book/| |- basic/| |- basic-utf8/| |- basic.zip| |- server/| |- server-utf8/| |- server.zip| - to-zh-CN-utf8.sh*- bak.sh*# 显示当前目录

26、下除 book 目录的所有文件$ find . -name book -prune -o -print# 查找当前目录下(除了 book 目录)的所有 .sh 文件$ find . -name book -prune -o -name *.sh -print# 显示当前目录下除 book/server 目录的所有文件$ find . -path ./book/server -prune -o -print# 使用绝对路径完成上述任务$ find /home/osmond -path /home/osmond/book/server -prune -o -print# 查找当前目录下(除了 bo

27、ok/server 目录)的所有 .sh 文件$ find . -path ./book/server -prune -o -name *.sh -print# 显示当前目录下除 book/server 和 book/server-utf8 目录的所有文件$ find . -path ./book/server* -prune -o -print# 查找当前目录下(除了 book/server 和 book/server-utf8 目录)的所有 .sh 文件$ find . -path ./book/server* -prune -o -name *.sh -print# 显示当前目录下除 book/server 和 book/basic 目录的所有文件$ find . ( -path ./book/server -o -path ./book/basic ) -prune -o -print# 查找当前目录下(除了 book/server 和 book/basic 目录)的所有 .sh 文件$ find .

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1