• Liunx操作系统——Linux文件和目录管理


    目录

    一. 与文件和目录相关的命令

    1.1 命令ls

    1.2 命令pwd

    1.3 命令cd

    1.4 命令mkdir

    1.5 命令rmdir

    1.6 命令rm

    1.7 命令cp

    1.8 命令mv

    1.9 环境变量PATH

    二. 与文档相关的命令

    2.1 命令cat

    2.2 命令tac

    2.3 命令more

    2.4 命令less

    2.5 命令head

    2.6 命令tail

    2.4 命令touch

    三. Linux文件类型

    3.1 常见文件类型

    3.2 Linux文件后缀名

    3.3 Linux的链接文件

    3.3.1 inode 概述

    3.3.2 inode 号码

    3.3.3 硬链接

    3.3.4 软链接

    四. 在Linux下搜索文件

    4.1 用which命令查找可执行文件的绝对路径

    4.2 用whereis命令查找文件

    4.3 用locate命令查找文件

    4.4 使用find搜索文件

    4.5 四种查找命令的对比:


    一. 与文件和目录相关的命令

            在Linux中,存在着绝对路径和相对路径。

    • 绝对路径:路径的写法一定是由根目录/写起的,例如 /usr/local/mysql。
    • 相对路径:路径的写法不是由根目录/写起的。例如,首先用户进入到/home,然后再进入到test ,执行的命令为# cd /home、# cd test

    1.1 命令ls

            命令ls(list的简写)是列出目录内容。我们做实验用的是root账户,所以运行命令ls后,会列出root账户的根目录/root下的内容。

    1. # ls
    2. anaconda-ks.cfg mi.sql
    3. # ls /
    4. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
    5. # ls /root
    6. anaconda-ks.cfg mi.sql

      ls命令还设置了其它一些选项:

    • -l选项,表示显示更加详细的列表;
    • -h选项,展示友好信息(比如:文件大小带单位);
    • -a选项,查询所有文件与文件夹,包括隐藏文件(所用带 . 的文件都是隐藏文件);
    1. # ls -l
    2. 总用量 16
    3. -rw-------. 1 root root 1257 96 18:21 anaconda-ks.cfg
    4. -rw-r--r--. 1 root root 11492 825 08:23 mi.sql
    5. # ls -lh
    6. 总用量 16K
    7. -rw-------. 1 root root 1.3K 96 18:21 anaconda-ks.cfg
    8. -rw-r--r--. 1 root root 12K 825 08:23 mi.sql
    9. # ls -lha
    10. 总用量 44K
    11. dr-xr-x---. 2 root root 165 98 15:35 .
    12. dr-xr-xr-x. 17 root root 224 98 09:48 ..
    13. -rw-------. 1 root root 1.3K 96 18:21 anaconda-ks.cfg
    14. -rw-------. 1 root root 161 96 11:44 .bash_history
    15. -rw-r--r--. 1 root root 18 1229 2013 .bash_logout
    16. -rw-r--r--. 1 root root 176 1229 2013 .bash_profile
    17. -rw-r--r--. 1 root root 176 1229 2013 .bashrc
    18. -rw-r--r--. 1 root root 100 1229 2013 .cshrc
    19. -rw-------. 1 root root 35 98 15:35 .lesshst
    20. -rw-r--r--. 1 root root 12K 825 08:23 mi.sql
    21. -rw-r--r--. 1 root root 129 1229 2013 .tcshrc

            上面显示内容中:

    • d 开头的表示这是一个文件夹。
    • -开头的表示这是一个文件。
    • l 开头的表示这是一个链接。

    ls命令可以简写:ls -l 简写为 ll; ls -h -l 简写为 ll –h

    1. # ll
    2. 总用量 16
    3. -rw-------. 1 root root 1257 96 18:21 anaconda-ks.cfg
    4. -rw-r--r--. 1 root root 11492 825 08:23 mi.sql
    5. # ll -h
    6. 总用量 16K
    7. -rw-------. 1 root root 1.3K 96 18:21 anaconda-ks.cfg
    8. -rw-r--r--. 1 root root 12K 825 08:23 mi.sql

    1.2 命令pwd

    命令pwd(print working directory)显示当前目录(返回绝对路径)。

    1. # pwd
    2. /root

    1.3 命令cd

            命令cd(change directory的简写)是用来变更用户所在目录的,如果后面什么都不跟,就会直接进入当前用户的根目录下。我们做实验用的是root账户,所以运行命令cd后,会进入root账户的根目录/root下。如果后面跟目录名,则会直接切换到指定目录下。示例命令如下:

    1. # cd /tmp
    2. # pwd
    3. /tmp
    4. # cd
    5. # pwd
    6. /root

            在Linux文件系统中,有两个特殊的符号也可以表示目录。“.”表示当前目录,“..”表示当前目录的上一级目录,示例命令如下:

    1. # cd /usr/local/lib/
    2. # pwd
    3. /usr/local/lib
    4. # cd .
    5. # pwd
    6. /usr/local/lib
    7. # cd ..
    8. # pwd
    9. /usr/local

    1.4 命令mkdir

            命令mkdir(make directory的简写)用于创建目录,在Linux中,如果它发现要创建的目录的上一级目录不存在,就会报错。为了解决这个问题,Linux设置了-p选项,这个选项可以帮我们创建一大串级联目录,不会报错。

    1. # mkdir /tmp/test/123
    2. mkdir: 无法创建目录 '/tmp/test/123': 没有那个文件或目录
    3. # mkdir -p /tmp/test/123
    4. # ls /tmp/test
    5. 123

    1.5 命令rmdir

            命令rmdir(remove directory的简写)用于删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔)。该命令只能删除目录,不能删除文件,所以一般不用它,而改用命令rm(remove的简写),这个命令既可以删除目录,又可以删除文件,将在下一节中介绍。rmdir有和mkdir具有相同的选项-p,它同样可以级联删除一大串目录,但在级联的目录中,如果某一个目录里还有目录或者文件时,这个命令就不好用了。

    1. # ls /tmp/test
    2. 123
    3. # rmdir /tmp/test/
    4. rmdir: 删除 '/tmp/test/' 失败: 目录非空
    5. # rmdir /tmp/test/123
    6. # ls /tmp/test
    7. #

    1.6 命令rm

    命令rm是最常用        的,用于删除文件或目录。它也有很多选项。你可以通过命令man rm来获得它的详细帮助信息。这里学习最常用的两个选项。

    • -r:删除目录用的选项,类似于rmdir,但可以删除非空目录。下面先创建一连串的目录,然后尝试删除它们。示例命令如下:
    1. # mkdir -p /tmp/test/123
    2. # rm -r /tmp/test/123
    3. rm:是否删除目录 '/tmp/test/123'? y

            和rmdir不同的是,使用rm –r命令删除目录时,会询问是否删除,如果输入“y”则会删除,如果输入“n”则不删除。另外,`rm –r`命令能删除非空目录。

    • -f:表示强制删除。它不再询问是否删除,而是直接删除。如果后面跟一个不存在的文件或者目录,则不会报错。下面来尝试删除一个不存在的目录,示例命令如下:
    1. # rm /tmp/test/123/123
    2. rm: 无法删除 '/tmp/test/123/123': 没有那个文件或目录
    3. # rm -f /tmp/test/123/123

            但如果要删除一个存在的目录时,即使加上`-f`选项也会报错。所以,使用命令`rm`删除目录时,一定要加`-r`选项。

    1. # rm -f /tmp/test/123
    2. rm: 无法删除 '/tmp/test/123': 是一个目录
    3. # rm -rf /tmp/test/123

    1.7 命令cp

      cp是copy(即复制)的简写,该命令的格式为:cp [选项] [ 来源文件 ] [目的文件]。例如,我想把test1复制成test2,可以写为cp test1 test2。下面介绍命令cp的几个常用选项。

    • -r:如果要复制一个目录,必须加-r选项,否则不能复制,这类似于rm命令。示例命令如下:
    # mkdir 123
    # cp 123 456
    cp: 略过目录"123"
    # cp -r 123 456
    # ls –ld 123 456
    drwxr-xr-x 2 root root 6 2月  18 09:49 123
    drwxr-xr-x 2 root root 6 2月  18 09:51 456
    • -i:这是安全选项,如果遇到一个已存在的文件,会询问是否覆盖.

    1.8 命令mv

      mv是move的简写,该命令的格式为:mv [ 选项 ] [源文件或目录] [目标文件或目录]。该命令有如下2种情况。

    • 目标文件是目录
    • 目标文件是文件

    (1)当目标文件是目录时,其存在与否,执行后的结果是不一样的。如果如果该目录不存在,则会把源目录重命名为给定的目标文件名。如果该目录存在,则会把源文件或目录移动到该目录中。

    下例中,目标文件是目录dirc,且dirc不存在,相当于把目录dira重命名为dirc。

    1. # mkdir /tmp/test_mv
    2. # cd /tmp/test_mv
    3. # mkdir dira dirb
    4. # ls
    5. dira dirb
    6. # mv dira dirc
    7. # ls
    8. dirb dirc

    下例中,目标文件是目录dirb,且dirb存在,则会把目录dirc移动到目录dirb里:

    1. # mv dirc dirb
    2. # ls
    3. dirb
    4. # ls dirb
    5. dirc

    (2)当目标文件是文件时,其存在与否,执行后的结果也是不一样的。如果该文件不存在,则会把源文件重命名为给定的目标文件名。如果该文件存在,则会询问是否覆盖。

            下例中,mv filed filee的目标文件是文件filee且这个文件不存在,相当于把文件filed重命名为filee。

    1. # touch filed
    2. # ls
    3. dirb filed
    4. # mv filed filee
    5. # ls
    6. dirb filee

    下例中,mv filed filee的目标文件是文件field2且这个文件存在,相当于覆盖field2。

    1. # touch filed1 field2
    2. # ls
    3. filed1 filed2
    4. # mv filed1 filed2
    5. # ls
    6. filed2

    1.9 环境变量PATH

            在讲环境变量之前,需要先介绍一下命令which,它用于查找某个命令的绝对路径。示例命令如下:

    1. # which rmdir
    2. /usr/bin/rmdir
    3. # which rm
    4. alias rm='rm -i'
    5. /usr/bin/rm
    6. # which ls
    7. alias ls='ls --color=auto'
    8. /usr/bin/ls

            其中rmls是两个特殊的命令,在上例中我们使用alias命令做了别名。我们用的rm实际上是rm -i,加上-i选项后,删除文件或者命令时都会询问是否确定要删除,这样做比较安全。命令alias可以设置命令或文件的别名。

            在上面的示例中,用which查到rm命令的绝对路径为/usr/bin/rm。我们使用命令时,只是直接打出了命令,而没有使用这些命令的绝对路径,这是环境变量PATH在起作用。请输入如下命令:

    1. # echo $PATH
    2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    这里的echo用来输出$PATH的值。PATH前面的$是变量的前缀符号。

    因为/bin目录在PATH的设定中,所以自然可以找到ls

    二. 与文档相关的命令

    上面介绍的几个命令几乎都是与目录相关的,下面继续学习几个与文档相关的命令。

    2.1 命令cat

            命令cat(它并不是某个单词的简写,大家可以通过man cat命令查看它的解释)是比较常用的一个命令,用于查看一个文件的内容并将其显示在屏幕上。cat后面可以不加任何选项,直接跟文件名。

    • -n :查看文件时,把行号也显示到屏幕上。示例命令如下(当前目录依然在/tmp/test_mv):
    1. # echo '111111111' > dirb/filee
    2. # echo '222222222' >> dirb/filee
    3. # cat dirb/filee
    4. 111111111
    5. 222222222
    6. # cat -n dirb/filee
    7. 1 111111111
    8. 2 222222222

            上例中出现了符号>>,它跟前面介绍的符号>类似,其作用也是重定向,即把前面的内容输入到后面的文件中,但符号>>是“追加”的意思。

            当使用符号>时,如果文件中有内容,则会删除文件中原有的内容,而使用符号>>则不会删除原有的内容。

    2.2 命令tac

            和命令cat一样,命令 tac(正好是命令cat的反序写法 )也是把文件的内容显示在屏幕上,只不过是先显示最后一行,然后显示倒数第二行,最后才显示第一行。我们使用命令tac来查看刚才创建的文件dirb/filee,显示的结果和命令cat正好是反序,如下所示:

    1. # tac dirb/filee
    2. 222222222
    3. 111111111

    2.3 命令more

            命令more也用于查看一个文件的内容,后面直接跟文件名。当文件内容太多,一屏不能全部显示时,用命令cat肯定是看不了前面的内容,这时可以使用命令more。当看完一屏后,按空格键可以继续看下一屏,按回车可以看下一条,看完所有内容后就会退出,在centos7中,按B可以向上翻屏,但是不能看上一条。如果你想提前退出,按q键即可。

    2.4 命令less

            命令less的作用和命令more一样,后面直接跟文件名,但命令lessmore功能要多一些。按空格键可以向下翻页,按B可以向上翻页。使用上下箭头查看上一条和下一条。

            在使用less查看某个文件时,可以很方便的搜索,使用/键向下搜索,使用?键向上搜索,如果是查找多个该字符串,可以按n键显示下一个。

    1. /DROP
    2. ?DROP

    2.5 命令head

            命令head用于显示文件的前10行,后面直接跟文件名。如果加-n选项,则显示文件的前几行,示例命令如下:

    1. # head /etc/passwd
    2. root:x:0:0:root:/root:/bin/bash
    3. bin:x:1:1:bin:/bin:/sbin/nologin
    4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
    5. adm:x:3:4:adm:/var/adm:/sbin/nologin
    6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    7. sync:x:5:0:sync:/sbin:/bin/sync
    8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    9. halt:x:7:0:halt:/sbin:/sbin/halt
    10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11. operator:x:11:0:operator:/root:/sbin/nologin
    12. # head -n1 /etc/passwd
    13. root:x:0:0:root:/root:/bin/bash
    14. # head -n2 /etc/passwd
    15. root:x:0:0:root:/root:/bin/bash
    16. bin:x:1:1:bin:/bin:/sbin/nologin

    大家请注意,选项-n后有无空格均可。另外,也可以省略字母n-后面直接跟数字, 如下:

    1. # head -2 /etc/passwd
    2. root:x:0:0:root:/root:/bin/bash
    3. bin:x:1:1:bin:/bin:/sbin/nologin

    2.6 命令tail

            和命令head类似,命令tail用于显示文件的最后10行,后面直接跟文件名。如果加-n选项,则显示文件的最后几行,示例命令如下:

    1. # tail /etc/passwd
    2. colord:x:991:986:User for colord:/var/lib/colord:/sbin/nologin
    3. qemu:x:107:107:qemu user:/:/sbin/nologin
    4. gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    5. rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    6. nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    7. sssd:x:990:985:User for sssd:/:/sbin/nologin
    8. gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
    9. avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    10. tcpdump:x:72:72::/:/sbin/nologin
    11. xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash
    12. # tail -n2 /etc/passwd
    13. tcpdump:x:72:72::/:/sbin/nologin
    14. xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash
    15. # tail -2 /etc/passwd
    16. tcpdump:x:72:72::/:/sbin/nologin
    17. xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash

            同样,-n后面有无空格均可,且字母n也可以省略。

            另外,命令tail-f选项也常用,它可以动态显示文件的最后10行。如果文件内容在不断增加,使用-f选项非常方便和直观。比如tail -f /var/log/messages可以动态、实时地查看文件/var/log/messages中的内容。

    2.4 命令touch

    命令touch用于创建文件(创建文件夹使用mkdir命令)。

    在当前目录下创建文件

    touch test.txt

    在其它文件夹下创建文件

    touch book/test.txt

    三. Linux文件类型

    3.1 常见文件类型

            在Linux文件系统中,主要有以下几种类型的文件。

    • 普通文件(regular file):即一般类型的文件,当用命令ls -l查看某个目录时,第一个属性为“-”的文件就是普通文件。它又可分成纯文本文件(ASCII)和二进制文件(binary)。纯文本文件可以通过catmoreless等工具直接查看内容,而二进制文件不能。例如,我们用的命令/usr/bin/ls就是一个二进制文件。
    • 目录(directory):它与Windows下的文件夹类似。用命令ls -l查看的第一个属性值为d的文件就是目录。
    • 链接文件(link file):用命令ls -l查看的第一个属性为l的文件就是链接文件,它类似于Windows下的快捷方式。
    • 设备(device):即与系统周边相关的一些文件,通常都集中在/dev目录下。 这种文件一般分为两种:
    • 块设备(block):块(block)设备,就是一些存储数据,简称硬盘。例如,第一块硬盘是/dev/sda1,用命令ls-l查看的第一个属性值为b的文件就是块设备。
    • 字符设备(character):字符(character)设备,是一些串行端口的接口设备,例如键盘、鼠标等,用命令ls-l查看的第一个属性为c的文件就是字符设备。

    3.2 Linux文件后缀名

            在Linux系统中,文件的后缀名没有具体意义,加或者不加都无所谓。但是为了便于区分,我们习惯在定义文件名时加一个后缀名。这样当用户看到这个文件名时,就会很快知道它到底是一个什么文件,例如1.sh、2.tar.gz、my.cnf、test.zip等。

    3.3 Linux的链接文件

    3.3.1 inode 概述

            文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

            文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode。

    • 元信息 → inode
    • 数据 → block

    3.3.2 inode 号码

            表面上,用户通过文件名打开文件,实际上,系统内部将这个过程分为三步:

    1. 系统找到这个文件名对应的inode号码;
    2. 通过inode号码,获取inode信息;
    3. 根据inode信息,找到文件数据所在的block,并读出数据。

            其实系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。

    可以使用ls -i 查看文件的inode号码。

    [root@localhost ~]# ls -i 33574991 anaconda-ks.cfg      2086 test  33574994 test.txt 

    链接文件分为硬链接(hard link)和软链接(symbolic link)两种。两种链接的本质区别在inode。

    3.3.3 硬链接

            通过文件系统的inode链接来产生的新的文件名,而不是产生新的文件,称为硬链接。

            一般情况下,每个inode号码对应一个文件名,但是Linux允许多个文件名指向同一个inode号码。意味着可以使用不同的文件名访问相同的内容。

    ln 源文件 目标 

            运行该命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中的链接数这时就会增加1。

            当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。删除一个文件名,只会使得inode中的链接数减1。

            需要注意的是不能对目录做硬链接。

    3.3.4 软链接

            类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,称为软链接。

    ln -s 源文件或目录 目标文件或目录 

            软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。例如,文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。这时,文件A就称为文件B的软链接soft link或者符号链接symbolic link。

            这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode链接数不会因此发生变化。

            由于硬链接的限制太多了(包括无法做目录的链接),所以用途上比较受限,而软链接的使用方向较广。

    四. 在Linux下搜索文件

            在Windows下有一个搜索工具,可以让我们很快找到文件,这很有用。然而在Linux下,搜索功能更加强大。

    4.1 用which命令查找可执行文件的绝对路径

            前面已经用过which命令,但需要注意的是,which只能用来查找PATH环境变量中出现的路径下的可执行文件。这个命令比较常用,有时我们不知道某个命令的绝对路径,用which查找就很容易知道了。例如,查找vicat的绝对路径,示例命令如下:

    1. # which vi
    2. /usr/bin/vi
    3. # which cat
    4. /usr/bin/cat

    4.2 用whereis命令查找文件

      whereis 用来搜索二进制文件(参数-b)、man说明文件(参数-m) 和源代码文件(参数-s). 如果省略参数,则返回所有信息。

            whereis 查找范围:标准Linux位置,以及$PATH, $MANPATH指定的位置。

    • -b:只查找二进制文件。
    • -m:只查找帮助文件(在man目录下的文件)。
    • -s:只查找源代码文件。

    例如,用whereis查看ls的示例命令如下:

    1. # whereis ls
    2. ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

            可以看到,这里找到了3个文件。这个命令类似于模糊查找,只要文件名包含“ls”字符,就会列出来。

    4.3 用locate命令查找文件

            locate在mlocate包中,没有可以用yum install -y mlocate安装。locate后面直接跟文件名。

      locate所搜索到的文件列表,不管是目录名还是文件名,只要包含我们要搜索的关键词,都会列出来,所以locate不适合精准搜索。

    locate依靠生成的db数据库查找,每天自动更新一次数据库,也可手动更新updatedb。

    4.4 使用find搜索文件

      find这个搜索工具是使用频率非常高的一个,请务必熟记,其格式为:find [路径] [参数] 。下面介绍其常用的几个参数。

    • -name filename:表示直接查找该文件名的文件,这个选项比较常用,示例命令如下:
    1. # find . -name test2 //.表示当前目录,当前目录在/tmp/4_6下面
    2. ./dir2/test2
    3. # find . -name "test*" //支持用*通配,且匹配表达式要放在引号中
    4. ./test1
    5. ./dir2/test2
    6. ./dir2/test5
    7. ./dir2/test6
    8. ./dir2/test7
    9. ./dir3/test3
    10. ./test4
    11. ./test5
    • -type filetype:表示通过文件类型查找文件。文件类型在前面已经简单介绍过,相信你已经基本了解了。filetype包含了fbcdl等类型(普通文件、块设备、字符设备、目录、链接文件等),示例命令如下:
    1. # find . -type d
    2. .
    3. ./dir2
    4. ./dir3
    5. ./dir4

    4.5 四种查找命令的对比:

    which

    whereis

    locate

    find

    文件支持

    可执行文件

    二进制,源文件,帮助文档

    所有文件类型

    所有文件类型

    查找路径

    环境变量PATH

    标准Linux位置,以及$PATH, $MANPATH指定的位置。

    文件列表库

    可指定,默认遍历当前路径及其子路径

    查找原理

    遍历环境变量PATH所指定的目录,寻找完全匹配filename的可执行文件。

    文件列表库,对去除.之后的所有字符后的filename进行完全匹配。

    文件列表库,部分匹配

    遍历磁盘

    查找效率/速度

    适用场合

    可执行文件的查找

    二进制文件,源文件,帮助文档的查找

    模糊查找(由于默认是部分匹配,会列出很多无关文件)

    which, whereis, locate都不适用的情况下,使用find

  • 相关阅读:
    MES管理系统可以帮中小企业解决哪些问题
    【解读】基于PREEvision的诊断设计
    Node2vec
    JVM高频知识合集(面试)【1】
    【Linux】JREE项目部署与发布
    【HTML】表格行和列的合并
    CPP 生态:编译器、IDE、测试工具大全
    UnitAuto——机器学习单元测试平台 (三)
    如何在 Spring Boot 中进行分布式追踪
    【AWS】如何用SSH连接aws上的EC2实例(虚拟机)?
  • 原文地址:https://blog.csdn.net/weixin_53919192/article/details/126800464