linux 文件管理命令之dirname \ find \ finds \ in \ indir详解

寻技术 Linux / 其他编程 2023年08月26日 118

dirname:显示文件除名字外的路径

  • 作用:显示文件除名字外的路径。
  • 用法:dirname 名称 dirname 选项
  • 主要选项如下:
命令 描述
--help 显示此帮助信息并退出。
--version 输出版本信息并退出。

案例练习

(1)查看/usr/bin/sort 路径。

# dirname /usr/bin/sort 
/usr/bin 

(2)查看 stdio.h 路径。

dirname stdio.h 

find:查找目录或者文件

  • 作用:查找文件或目录。 使用权限:所有用户。
  • 用法:find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
  • 主要选项如下:
命令 描述
path...路径 告诉 find 在哪儿去找用户要的东西。
-exec find 对匹配的文件执行该参数所给出的其他 linux 命令。相应命令的形式为’ 命令 - and’ {} ;,注意{ }和;之间的空格。
-ok 和- exec 的作用相同,只不过和会人交互而已,OK 执行前会向用户确认是不是要执行。find 命令的主要参数如下。
-name 按照文件名查找文件。
-perm 按照文件权限查找文件。
-prune 使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用了-depth 选项,那么-prune 选项将被 find 命令忽略。
-user 按照文件属主查找文件。
-group 按照文所属的组查找文件。
-mtime -n +n 按照文件的更改时间查找文件,-n 表示文件更改时间距现在 n 天以内,+n 表示文件更改时间距现在 n 天以前。find 命令还有-atime 和-ctime 选项,但它们都和-mtime 选项相似,所以在这里只介绍-mtime 选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups 中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd 中不存在。
-newer file1 ! file2 查找更改时间比文件 file1 新但比文件 file2 旧的文件。
-type 查找某一类型的文件。
-size n[c] 查找文件长度为 n 块的文件,带有 c 时表示文件长度以字节计。
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab 中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件时不跨越文件系统 mount 点。
-follow 如果 find 命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用 cpio 命令,将这些文件备份到磁带设备中。

案例练习

find 命令查找文件的 5 种方法如下。

(1)文件名查找法。

find / -name named.conf

(2)快速查找文件法。

如果知道文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比 如 named.conf 文件,从它的文件扩展名“.conf”可以判断这是一个配置文件,那么它应该在/etc 目录内,此时可以使用下面的命令:

find /etc -name named.conf

(3)根据部分文件名查找法。 有时仅知道某个文件包含有 abdd 这 4 个字符,那么要查找系统中所有包含这 4 个字符的 文件,可以输入下面的命令:

find / -name '*abdd*'

输入这个命令以后,Linux 系统将会在“/”目录中查找所有包含 abdd 这 4 个字符的文件 (其中“*”是通配符),比如 abddrmyz 等符合条件的文件都能显示出来。

(4)根据文件的特征查找法。

有时知道某个文件的大小、修改日期、所属用户等特征,也可以使用“find”命令查找出 文件来。例如,查找在系统中属于已经作废用户的文件,可以使用下面的命令:

find / -nouser 

(5)混合查找方式查找法。

find 命令可以使用混合查找的方法。例如,要想在“/home”目录中查找大于 500 000 字节, 并且属于 cao 用户的文件,可以使用-and(与)把两个查找参数连接起来组合成一个混合的查 找方式。

find /home -size +500000c -and -user cao

findfs:通过列表或用户 ID 查找文件系统

作用:用来查找指定卷标的文件系统。

用法:

findfs LABEL=<label>
findfs UUID=<uuid>

主要选项如下:

 LABEL=<label>:卷标名称。
 UUID=<uuid>:分区的 UUID 号。

说明 随着 Linux 系统中硬盘容量和数目的增加,Linux 系统中的分区数量也越来越多, 使用 findfs 命令可以通过卷标名称或 UUID 号快速定位分区位置

案例练习

查找卷标名称是“/var/ftp”的分区位置,使用如下命令:

#findfs LABEL=/var/ftp 
/dev/hda9 

ln:链接文件或目录

  • 作用:链接文件或目录。

  • 用法:

    ​ ln [选项] [源文件或目录] [目标文件或目录]

    ​ ln [选项] [源文件或目录…] [目的目录]

  • 主要选项如下:

命令 描述
-b–backup 删除、覆盖目标文件之前的备份。
-d-F–directory 建立目录的硬链接。
-f–force 强行建立文件目录的链接,不论文件目录是否存在。
-i–interactive 覆盖既有文件之前先询问用户。
-n–no-dereference 把符号链接的目的目录视为一般文件。
-s–symbolic 对源文件建立符号链接,而非硬链接。
-S<字尾备份字符串>–suffix=<字尾备份字符串> 用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号“~”,可通过“-S”参数来改变它。
-v–verbose 显示命令执行过程。
-V<备份方式>–version-control=<备份方式> 用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同的备份方式时,也会产生不同字尾的备份字符串。
–help 在线帮助。
–version 显示版本信息。

说明 ln 命令用于链接文件或目录。如果同时指定两个以上的文件或目录,且最后的目 的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若 同时指定多个文件或目录,且最后的目的地并非一个已存在的目录,则会出现错误信息。

链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。 建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的 硬链接。而对于符号链接,则不存在这个问题。默认情况下,ln 产生硬链接。

在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名, 系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接文件的内 容完全相同。如果[链接名]是一个文件,用户将被告知该文件已存在且不进行链接。如果指定 了多个“目标”参数,那么最后一个参数必须为目录。

案例练习

(1)为当前目录下的文件 lunch 创建一个符号链接/home/xu。

$ ln - s lunch /home/xu

说明 给 ln 命令加上-s 选项,则建立符号链接。如果[链接名]已经存在,但不是目录, 将不进行链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录, 并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录, 系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指 向原“目标”的符号链接文件。

(2)创建到一个文件的另一个链接。

#ln -f chap1 intro 

这会将 chap1 链接到新的名称 intro。如果 intro 不存在,则会创建该文件名。如果 intro 已 经存在,那么这个文件会被替换为指向 chap1 的一个链接,然后 chap1 和 intro 文件名会指向同 一个文件。对这里面任何一个文件的更改都会出现在另一个文件中。如果一个文件名被 rm 命 令删除,那么该文件并没有完全被删除,因为它依旧以其他名字存在。

(3)将文件链接为另一个目录中的相同名字。

#ln index manual

这会将 index 链接到新名称 manual/index。

(4)将几个文件链接为另一个目录中的名称。

ln chap2 jim/chap3 /home/manual

这会将 chap2 链接到新名称/home/manual/chap2,将 jim/chap3 链接到新名称/home/ manual/chap3。

(5)在不指明目标文件参数的情况下得到相同的结果。

ln -s /tmp/toc

lndir:链接目录内容

  • 作用:链接目录内容。
  • 用法:lndir [-ignorelinks] [-silent] [源目录] [目的目录]

主要选项如下:

命令 描述
-ignorelinks 直接建立符号链接的符号链接。
-silent 不显示命令执行过程。

说明 执行 lndir 命令,可一口气把源目录下的文件和子目录统统建立起相互对应的符号 链接。

关闭

用微信“扫一扫”