【CentOS】Linux 文件与目录管理

news2024/12/22 18:44:58

目录

1、目录的切换、新增和删除

(1)cd (change directory,切换目录)

(2)pwd (显示目前所在的目录)

(3)mkdir (make directory,建立新目录 )

(4)rmdir (删除“空”的目录)

2、文件与目录查看:ls

3、复制、删除与移动:cp/rm/mv

(1)cp (复制文件或目录)

(2)rm (删除文件或目录)

(3)mv (移动文件与目录,或重命名)

4、文件内容查看

(1)直接查看文件内容:cat/tac/nl

(2)翻页查看文件内容:more/less

(3)截取文件内容 head/tail

(4)非纯文本文件的读取:od 命令

(5)修改文件时间或创建新文件:touch

5、命令与文件的查找

(1)脚本文件(命令文件)的查找:which

(2)文件查找:find/whereis/locate


        在 Linux 中操作与管理文件及目录,需要在不同的目录间进行切换、还要能够建立与删除目录、建立与删除文件,同时还能够寻找文件、查看文件内容等等,这篇文章将介绍以上这些操作的基本命令。

1、目录的切换、新增和删除

        在 Linux 中是有一些特殊的目录的,下面这些就是比较特殊的目录,这个得要用力地记下来才行:

.        代表此层目录
..       代表上一层目录
-        代表前一个工作目录
~        代表目前使用者身份所在的家目录
~account 代表account这个使用者的家目录(account是个账号名称)~account

        需要注意的是:在所有目录下面都会存在 “.” 和 “..” 这两个目录,不信?你在任意一个目录下输入命令:“ll -a” 就知道了。

        下面是几个常见的处理目录的命令:

cd:    切换目录
pwd:   显示当前目录
mkdir: 建立一个新目录
rmdir: 删除一个空目录

(1)cd (change directory,切换目录)

        cd 是 Change Directory 的缩写,用来切换工作目录的命令,比如:“cd ~”、“cd -”、“cd ..” 等等,比较简单,基本都会。

(2)pwd (显示目前所在的目录)

        pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

[root@swadian ~]# pwd [-P]
选项与参数:-P:显示出真正的路径,而非使用链接(link)路径

        这里特别说一下 -P 这个参数,链接路径和真实路径有什么区别呢?在 CentOS 7.x 中,/var/mail 是 /var/spool/mail 的链接文件,我们进入 /var/mail 这个目录执行以下命令即可看出路径上的区别:

[root@localhost mail]# pwd
/var/mail
[root@localhost mail]# pwd -P
/var/spool/mail

(3)mkdir (make directory,建立新目录 )

        创建新目录命令,命令语法如下:

[root@swadian ~]# mkdir [-mp] 目录名称
选项与参数:
-m : 设置文件的权限。直接设置,不使用默认权限(umask)。
-p : 帮助你直接将所需要的目录(包含上层目录)递归创建

(4)rmdir (删除“空”的目录)

        使用 rmdir 删除空目录,目录需要一层一层的删除才行,而且被删除的目录里面不能存在其他的目录或文件,这也是所谓的空目录(empty directory)的意思。一般情况下,使用 rm 命令会比较方便。

2、文件与目录查看:ls

        ls 命令算是 Linux 系统当中用得最多的命令,默认显示非隐藏文件的文件名、然后按文件名进行排序。以下是 ls 命令的使用语法://一般情况下,常使用 ll

[root@swadian ~]# ls [-选项] 文件名或目录名称
选项与参数:
-a :全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用);
-d :仅列出目录本身,而不是列出目录内的文件数据(常用);
-l :详细信息显示,包含文件的属性与权限等数据(常用);

3、复制、删除与移动:cp/rm/mv

        我们都知道,复制文件可以使用 cp(copy) 命令,不过 cp 命令除了单纯的复制外,还具有建立链接文件(就是快捷方式),比对两文件的新旧而予以更新,以及复制整个目录等的功能。下边就来介绍一下:

(1)cp (复制文件或目录)

[root@swadian ~]# cp [-选项] 源文件(source) 目标文件 (destination)
[root@swadian ~]# cp [-选项] sourcel source2 source3... directory #一次性复制多个文件
选项与参数:
-a : 相当于all的意思,将文件的所有特性都一起复制(常用);
-i : 若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用);
-p : 连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r : 递归复制,用于目录的复制操作(常用);
-l : 进行硬链接(hard link)的链接文件建立,而非复制文件本身;
-s : 复制成为符号链接文件(symbolic link),亦即“快捷方式”文件;

        如下,使用 cp 命令在 test001 目录下一次性复制 3 个文件到 test002 目录中:

[root@localhost test001]# cp demo1.txt demo2.txt demo3.txt ../test002
[root@localhost test001]# ll ../test002
total 0
-rw-r--r--. 1 root root 0 Jan 26 00:46 demo1.txt
-rw-r--r--. 1 root root 0 Jan 26 00:46 demo2.txt
-rw-r--r--. 1 root root 0 Jan 26 00:46 demo3.txt

        这里要特别说明下 -a 参数,默认情况下,cp 命令复制文件时会修改文件的某些属性,比如权限和创建时间,在使用 -a 参数后,将复制这些文件的所有属性(整个文件完全一模一样),示例如下,将 test001 目录的文件复制到当前目录中(test002)

[root@localhost test002]# cp -a ../test001/root.txt .  #使用-a复制
[root@localhost test002]# cp ../test001/test1.txt .    #默认复制
[root@localhost test002]# ll ../test001                #001目录(源目录)
total 4
-rw-r--r--. 1 root    swadian 20 Jan 23 01:33 root.txt
-rw-rw-r--. 1 swadian swadian  0 Jan 26 00:55 test1.txt
[root@localhost test002]# ll                           #002目录(当前目录)
total 4
-rw-r--r--. 1 root swadian 20 Jan 23 01:33 root.txt    #文件与test001的文件一模一样
-rw-r--r--. 1 root root     0 Jan 26 01:05 test1.txt   #变动了权限和创建时间

        上边谈到, cp 命令还可以创建链接文件,使用 -l 及 -s 都会建立链接文件(link file),不过这两种链接文件却有不一样的情况。 -l 是创建硬链接(hard link),-s 则是符号链接(symbolic link)。如下所示,使用 cp 命令将 test001 目录的 root.txt 文件复制到当前目录中(test002)

[root@localhost test002]# cp -l ../test001/root.txt ./root_hlink.txt #创建硬链接
[root@localhost test002]# cp -s ../test001/root.txt ./root_slink.txt #创建符号连接
[root@localhost test002]# ll #当前目录(test002)
total 4
-rw-r--r--. 2 root swadian 20 Jan 23 01:33 root_hlink.txt #硬链接
lrwxrwxrwx. 1 root root    19 Jan 26 01:37 root_slink.txt -> ../test001/root.txt #符号连接
[root@localhost test002]# ll ../test001 #源目录
total 4
-rw-r--r--. 2 root    swadian 20 Jan 23 01:33 root.txt

        所谓的符号链接,就是一个快捷方式,这个快捷方式会链接到 ../test001/root.txt 文件。所以你会看到文件名右侧会有个指向 (->) 的符号。至于 root_hlink.txt 文件则与 root.txt 文件的属性与权限完全一模一样,与尚未进行链接前的差异则是第二栏的 link 数由 1 变成了 2,因为硬链接涉及到 inode 的相关知识,我们将在后续详细介绍。

(2)rm (删除文件或目录)

        rm 为删除的命令(remove),通常在 Linux 系统下,为了怕文件被误删,默认加入了 -i 这个选项,以下是 rm 命令的使用方式:

[root@swadian~]# rm [-fir] 文件或目录
选项与参数:
-f : 就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i : 交互模式,在删除前会询问使用者是否操作。
-r : 递归删除,最常用于目录的删除。(非常危险的选项,谨慎使用)

(3)mv (移动文件与目录,或重命名)

        mv 为移动的命令(move),以下是 mv 命令的使用方式:

[root@swadian ~]# mv [-fiu] source destination
[root@swadian ~]# mv [options] sourcel source2 source3... directory #如果有多个源文件或目录,则最后一个目标文件一定是[目录]
选项与参数:
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i : 若目标文件(destination)已经存在时,就会询问是否覆盖。
-u : 若目标文件已经存在,且source比较新,才会更新(update)。

        虽然可以使用 mv 来修改一个文件的文件名。不过,在 Linux 中有个 rename 命令,可以用来更改大量文件的文件名,你也可以利用 man rename 来查看一下这个命令的用法。

4、文件内容查看

        如果我们要查看一个文件的内容时,该怎么办呢?在 Linux 中针对文件的不同查看需求提供了不同的命令,以下是 linux 中查看文件的一些指令:

  • cat 由第一行开始显示文件内容。
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写
  • nl 显示的时候,同时输出行号。
  • more 一页一页地显示文件内容。
  • less 与 more 类似,但是比 more 更好的是,它可以往前翻页。
  • head 只看前面几行。//头部
  • tail 只看后面几行。//尾巴
  • od 以二进制的方式读取文件内容。

(1)直接查看文件内容:cat/tac/nl

        当一个文件内容不是很多,文件内容可以一次性显示到屏幕上面时,可直接使用 cat/tac/nl 命令来查看文件内容:

        cat 命令:

        你可能会疑惑,Linux 里面有“猫”命令?不是的,cat 是 Concatenate(串联) 的简写,主要的功能是将一个文件的内容连续打印在屏幕上面。cat 命令使用的语法如下:

[root@swadian ~]# cat [-bn] 文件
选项与参数:
-b 列出行号,仅针对非空白行做行号显示,空白行不标行号;
-n 打印出行号,连同空白行也会有行号,与-b 的选项不同;

        nl 命令:

        nl 可以将输出的文件内容自动地加上行号,其默认的结果与 cat -n 有点不太一样,nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等的功能。

(2)翻页查看文件内容:more/less

        不过,文件内容较多,不能一次性将数据显示到屏幕上面时,我们又该怎么办呢?Linux 提供了 more 与 less 命令,通过这两个命令,我们可以一页一页的查看文件内容,不用担心前面的数据看不到。

        more 命令:

        使用 more 命令可以一页一页翻动文件内容:

[swadian@localhost ~]$ more swadian.txt 

Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with s
upport for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an application’s
 needs. As of Spring Framework 6.0, Spring requires Java 17+.

//省略内容...

A note about modules: Spring’s framework jars allow for deployment to JDK 9’s module path ("Jigsaw"). For use in Jigsaw-enabled applications, the Spring Frame
work 5 jars come with "Automatic-Module-Name" manifest entries which define stable language-level module names ("spring.core", "spring.context", etc.) indepen
dent from jar artifact names (the jars follow the same naming pattern with "-" instead of ".", e.g. "spring-core" and "spring-context"). Of course, Spring’s f
ramework jars keep working fine on the classpath on both JDK 8 and 9+.

--More--(27%)

        当 more 后面接的文件内容行数大于屏幕输出的行数时,在最后一行会显示出目前显示的百分比,此时,可以使用如下命令进行你想要的下一步操作:

  • 空格键 (space):代表向下翻一页;
  • Enter:代表向下翻一行;
  • / 字符串:代表在这个显示的内容当中,向下查找字符串这个关键词
  • :f:立刻显示出文件名以及目前显示的行数;
  • q:代表立刻离开 more,不再显示该文件内容
  • b 或 [ctrl]-b:代表往回翻页,不过这操作只对文件有用,对管道无用

        less 命令:

        less 的用法比起 more 命令更加丰富,使用 less 命令时,可以很方边的使用 [pageup]、[pagedown] 等按键来往前往后翻看文件。在使用 less 命令查看文件内容时,可以使用如下命令进行操作:

  • 空格键:向下翻动一页
  • [pagedown]:向下翻动一页
  • [pageup]:向上翻动一页
  • /字符串:向下查找字符串的功能
  • ?字符串:向上查找字符串的功能
  • n:重复前一个查找 (与 / 或 ? 有关)
  • N:反向的重复前一个查找 (与 / 或 ? 有关)
  • g:前进到这个数据的第一行
  • G:前进到这个数据的最后一行去 (注意大小写)
  • q:离开 less 这个程序。

        如下,是使用 less 命令查看文件内容后,使用 “/字符串” 查找 “Spring” 字符串的示例:

(3)截取文件内容 head/tail

        当一个文件内容太多,但我们又只需要获取文件中的几行时,就可以使用 head 或者 tail 命令来完成此操作。head 用来取出文件前面几行,tail 用来取出后面几行。需要注意的是,head 与 tail 都是以“行”为单位来进行数据截取的。

        head 命令:

        head 的英文意思就是“头”,用来显示出一个文件的前几行,-n 选项用来指定需要显示的行数,若无 -n 选项时,head 命令默认只显示十行。

        这里需要注意的是,-n 选项的数字如果为负数时,例如:-n -100,代表列出前面所有行数,但不包括后面 100 行。示例如下所示:

[swadian@localhost ~]$ head -n 5 swadian.txt    //显示前5行
this is my file !
Spring Framework Overview
Spring makes it easy to create Java enterprise applications.
It provides everything you need to embrace the Java language in an enterprise environment
with support for Groovy and Kotlin as alternative languages on the JVM
[swadian@localhost ~]$ head -n -94 swadian.txt  //不显示后边94行(测试文件内容共95行)
this is my file !

        tail 命令:

        tail 命令用来取出一个文件内容的后面几行,其使用语法如下:

[root@swadian~]# tail [-n number] 文件
选项与参数:
-n: 后面接数字,代表显示几行的意思
-f: 表示持续刷新显示后面所接文件中的内容,要等到按下[ctrl]-c才会结束

(4)非纯文本文件的读取:od 命令

        如果我们需要查看的是非纯文本文件的内容,那么使用上边纯文本查看的命令就会产生乱码,所以我们又该如何去读取这些信息呢?比如,需要读取 /usr/bin/passwd 这个执行文件中的内容时,又该怎么办呢?

        Linux 系统提供了 od 命令来支持非纯文本文件的内容读取,使用语法如下:

[root@swadian ~]# od [-t TYPE] 文件
选项或参数:
-t: 后面可以接各种【类型(TYPE)】的输出,例如:
    a: 利用默认的字符来输出;
    c: 使用ASCII字符来输出;
    d[size]: 利用十进制(decimal)来输出数据,每个整数占用size Bytes;
    f[size]: 利用浮点数值(floating)来输出数据,每个数占用size Bytes;
    o[size]: 利用八进制(octal)来输出数据,每个整数占用size Bytes;
    x[size]: 利用十六进制( hexadecimal)来输出数据,每个整数占用size Bytes;

        使用示例如下:

[swadian@localhost ~]$ od -t c /usr/bin/passwd
#省略...
0044700   v   e  \0   s   t   a   t   u   s  \0   s   t   d   i   n  \0
0044720   H   e   l   p       o   p   t   i   o   n   s   :  \0   [   O
0044740   P   T   I   O   N   .   .   .   ]       <   a   c   c   o   u
0044760   n   t   N   a   m   e   >  \0   %   s   :       b   a   d    
#省略...

(5)修改文件时间或创建新文件:touch

        Linux 中的文件一般具有三个主要的变动时间,分别是以下三个时间:

        修改时间(modification time,mtime):

        当该文件的【内容数据】变更时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限。

        状态时间(status time,ctime):

        当该文件的【状态(status)】改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间。

        读取时间(access time,atime):

        当【该文件的内容被读取】时,就会更新这个读取时间 (access),举例来说,我们使用 cat 去读取 /etc/man_db.conf,此时就会更新该文件的 atime。

        在默认的情况下,Is 显示出来的是该文件的 mtime,也就是这个文件的内容上次被修改的时间。那么,如何查看这三个时间呢?如下所示,依次执行如下四条命令:

[swadian@localhost ~]$ date;ls -l /etc/man_db.conf;ls -l --time=atime /etc/man_db.conf;ls -l --time=ctime /etc/man_db.conf
Mon Jan 29 22:28:01 PST 2024 #当前时间
-rw-r--r--. 1 root root 5171 Oct 30  2018 /etc/man_db.conf #修改时间 mtime 
-rw-r--r--. 1 root root 5171 Jan 29 19:24 /etc/man_db.conf #读取过内容时间 atmin
-rw-r--r--. 1 root root 5171 Jan 18 23:51 /etc/man_db.conf #更新过状态时间 ctime

        注:以上将四个命令同时依序执行,命令中间用分号【;】隔开。Linux 中【;】代表连续命令的执行。

        Linux 中文件的时间是很重要的,因为,如果文件的时间错误的话,可能会造成某些程序无法顺利的运行。那么万一我发现了一个文件的时间有问题,又该如何把该文件的时间修改正确呢?

        此时,就需要用到【touch】这个命令了。【touch】命令的使用语法如下:

[root@swadian ~]# touch [-acdmt] 文件
选项与参数:
-a: 仅自定义access time;
-c: 仅修改文件的时间,若该文件不存在则不建立新文件;
-d: 后面可以接欲自定义的日期而不用目前的日期,也可以使用--date="日期或时间";
-m: 仅修改mtime;
-t: 后面可以接欲自定义的时间而不用目前的时间,格式为[YYYYMMDDhhmm];

        使用示例如下:

[swadian@localhost test001]$ touch -m test001.txt  #修改mtime
[swadian@localhost test001]$ ll
total 4
-rw-rw-r--. 1 swadian swadian  0 Jan 29 23:03 test001.txt

        通过 touch 这个命令,我们可以轻易地自定义文件的日期与时间,并且也可以建立一个空文件。一般情况下,在文件的属性中,我们看重的还是 mtime。最后,总结下 touch 这个命令最常被使用的情况:

  • 建立一个空文件
  • 将某个文件日期自定义为目前时间(mtime与atime)

5、命令与文件的查找

(1)脚本文件(命令文件)的查找:which

        在 Linux 中有许多的命令,每一个命令都对应一个脚本文件(Linux 中一切皆文件),那么这些命令对应的文件放在哪里呢?举例来说,Is 这个常用的命令放在哪里?可以通过 which 命令来查找。示例如下:

[swadian@localhost /]$ which ls
alias ls='ls --color=auto'
        /usr/bin/ls

        which 命令的使用语法如下:

[root@swadian~]# which [-a] command
选项或参数:
-a: 将所有由PATH目录中可以找到的命令均列出,而不止第一个被找到的命令名称。

        which 命令是根据【PATH】这个环境变量所规范的路径,去查找执行文件的文件名。若加上 -a 选项,则可以列出所有的可以找到的同名执行文件。

        注意:如果命令文件不在 PATH 目录中,那么 which 是找不到的,比如查找:history 命令。

(2)文件查找:find/whereis/locate

        Linux中提供了一些文件查找的命令,比如:find、whereis、locate命令。通常 find 命令不很常用,因为速度慢还影响硬盘性能。一般在 whereis 或是 locate 查找不到的情况下,才会使用 find 来查找。

        whereis 命令:

        whereis 命令只会从一些特定的目录中去查找文件,这也是 whereis 命令比 find 快的原因,whereis 的使用语法如下:

[root@swadian~]# whereis [-bmsu] 文件或目录名
选项与参数:
-l: 可以列出whereis会去查询的几个主要目录;
-b: 只找binary(二进制)格式的文件;
-m: 只找在说明文件manual路径下的文件;
-S: 只找 source源文件;
-u: 查找不在上述三个项目当中的其他特殊文件;

        使用示例如下:

[swadian@localhost /]$ whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

        whereis 查找主要是针对 /bin/sbin下面的执行文件,以及 /usr/share/man下面的 man page文件,还有几个比较特定的目录而已,所以查找速度会比较快。想要知道 whereis 到底查了哪些目录?可以使用 whereis -l 命令进行查看。

        locate 命令:

        locate 命令的使用语法如下:

[root@swadian ~]# locate [-ir] keyword
选项与参数:
-i: 忽略大小写的差异;
-c: 不输出文件名,仅计算找到的文件数量;
-l: 仅输出几行的意思,例如输出五行则是-l 5;
-S: 输出locate所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等;
-r: 后面可接正则表达式的显示方式;

        使用 locate 来寻找数据也特别快,这是因为 locate 寻找的数据是由已建立的数据库 /var/lib/mlocate/ 里面的数据所查找到的,因此不用直接再去硬盘当中读取数据。

        使用 locate 命令的限制:数据库的建立默认是在每天执行一次(每个 Linux 发行版都不同,CentOS 7.x 是每天更新数据库一次),所以当你新建立起来的文件,却还在数据库更新之前查找该文件,那么 locate 会告诉你【找不到】。//使用限制

        所以,有时候需要手动去更新 locate 数据库,方法非常简单,直接输入【updatedb】
就可以了。updatedb 命令会去读取 /etc/updatedb.conf 这个配置文件的设置,然后再去硬盘里面进行查找文件名的操作,最后就更新整个数据库文件。因为 updatedb 会去查找硬盘,所以当你执行 updatedb 时,可能会等待数分钟的时间。

  • updatedb:根据 /etc/updatedb.conf 的设置去查找系统硬盘内的文件,并更新 /var/lib/mlocate 内的数据库文件。
  • locate:依据 /var/lib/mlocate 内的数据库记录,找出用户所输入关键词的文件名。

        find 命令:

        find 命令的使用语法如下:

[root@swadian~]# find [PATH] [option] [action]

        (1)与时间有关的选项与参数

选项与参数:与时间有关的选项,共有-atime、-ctime与-mtime,以-mtime说明。
-mtime  n:n为数字,意义为在n天之前的【一天之内】被修改过内容的文件;
-mtime +n:列出在n天之前(不含n天本身)被修改过内容的文件;
-mtime -n:列出在n天之内(含n天本身)被修改过内容的文件;
-newer file: file为一个存在的文件,列出比file还要新的文件;

范例一:将过去系统上面24小时内有修改过内容(mtime)的文件列出。
[root@swadian~]# find / -mtime 0
#那个0是重点。0代表目前的时间,所以,从现在开始到24小时前,
#有变动过内容的文件都会被显示。那如果是三天前那一天的24小时内?
#find/ -mtime 3有变动过的文件都被显示的意思。

范例二:寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出。
[root@swadian~]# find /etc -newer /etc/passwd
#-newer用在辨别两个文件之间的新旧关系是很有用的。

        (2)与使用者或用户组名称有关的参数

选项与参数:
-uid n:n为数字,这个数字是使用者的账号ID,亦即UID,这个UID是记录在/etc/passwd里面与账号名称对应的数字
-gid n:n为数字,这个数字是用户组名称的ID,亦即GID,这个GID记录在/etc/group
-user name: name为使用者账号名称。例如swadian;
-group name: name为用户组名称,例如root;
-nouser:查找文件的拥有者不在/etc/passwd中;
-nogroup:查找文件的拥有用户组不存在于/etc/group的文件.
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的。在这个时候,就可以使用-nouser与-nogroup查找。

范例一:查找/home下面属于swadian的文件。
[root@swadian ~]# find /home -user swadian
#这个东西也很有用的,当我们要找出任何一个用户在系统当中的所有文件时,
#就可以利用这个命令将属于某个用户的所有文件都找出来。

范例二:查找系统中不属于任何人的文件。
[root@swadian~]# find / -nouser
#通过这个命令,可以轻易的就找出那些不太正常的文件。如果有找到不属于系统任何用户的文件时,
#不要太紧张,那有时候是正常的,尤其是你曾经以源代码自行编译软件时。

        除了由网络上面下载文件时会发生无属主之外,如果将系统里面某个账号删除了,但是该账号已经在系统内放了很多文件时,也可能会产生无属主的文件。此时就得使用这个 -nouser 来找出该类型的文件。//无属主文件

        (3)与文件权限及名称有关的参数

选项与参数:
-name filename:查找文件名称为filename的文件;
-size [+-]SIZE:查找比SIZE还要大(+)或小(-)的文件。这个SIZE的规格有:
    c:代表Bytes,k:代表1024Bytes。所以,要找比50KB还要大的文件,就是【-size+50k】
-type TYPE:查找文件的类型为TYPE的,类型主要有:
    一般正规文件(f),设备文件(b,c),日录(d),链接文件(l),socket(s),及FIFO(p)等属性。
-perm mode:查找文件权限【刚好等于】mode的文件,
    这个mode为类似chmod的属性值,举例来说,-rwxr-xr-x的属性为0755.

范例一:找出文件名为passwd这个文件。
[root@swadian ~]# find / -name passwd

范例二:找出文件名包含了passwd这个关键字的文件。
[root@swadian~]# find / -name "*passwd*"
#利用这个-name可以查找文件名。默认是完整文件名,如果想要找关键字,
#可以使用类似*的任意字符来处理。

范例三:找出/run目录下,文件类型为socket的文件名有哪些?
[root@swadian ~]# find /run -type s
#这个-type的属性也很有帮助。尤其是要找出那些怪异的文件。
#例如socket与FIFO文件,可以用find /run -type p 或 -type s来找

        (4)额外可进行的操作

选项与参数:
-exec command: command为其他命令,-exec后面可再接额外的命令来处理查找到的结果。
-print: 将结果打印到屏幕上,这个操作是默认操作。

范例一:将找到的文件使用ls -l列出来。
[root@swadian ~]# find / -name passwd -exec ls -l {} \;
#注意,那个-exec后面的[ls -l]就是额外的命令,命令不支持命令别名,所以仅能使用ls -l,不可以使用ll

范例二:找出系统中,大于1MB的文件。
[root@swadian ~]# find / -size +1M

        find 的特殊功能就是能够进行额外的操作(action)。

        在【将找到的文件使用 ls -l 列出来】范例中有 {} 以及 \; 还有 -exec 关键词,这些特殊东西的意义为:

  • {} 代表的是由 find 找到的内容,在上例中,find 的结果会被放置到 {} 位置中。
  • -exec 一直到 \; 是关键词,代表 find 额外操作的开始(-exec)到结束(\;),在这中间的就是 find 命令内的额外操作。在本例中就是[ Is -l ]
  • 因为【;】在bash 环境下是有特殊意义的,因此利用反斜杠来转义

        find 命令不但可以指定查找的目录,还可以利用额外的选项与参数来找到最正确的文件名。不过由于 find 在查找数据的时候相当消耗硬盘资源,所以没事不要使用 find。在进行文件查找时,优先使用上面提到的 whereis 与 locate。

        至此,全文结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1458002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络——循环神经网络(RNN)

神经网络——循环神经网络&#xff08;RNN&#xff09; 文章目录 神经网络——循环神经网络&#xff08;RNN&#xff09;一、循环神经网络&#xff08;RNN&#xff09;二、循环神经网络结构1、一对一&#xff08;One to One&#xff09;2、一对多&#xff08;One to Many&#…

架构师蓝图: 理解软件风格与模式

本文介绍了10种软件架构风格及其对应设计模式&#xff0c;梳理了各个风格的优缺点和适用场景&#xff0c;帮助读者在架构选项过程中能有的放矢&#xff0c;做出更适合业务场景的架构设计。原文: The Architect’s Blueprint: Understanding Software Styles and Patterns with …

早春氛围感穿搭~清新甜美的女童外套

告别臃肿的冬季 迎接浪漫清爽的春天吧 属于女孩子的甜美氛围感穿搭 一件粉粉嫩嫩的外套值得拥有 两侧实用口袋简单大方的款式 怎么穿都很好看哦&#xff01;

从入门到精通:成为文件批量改名高手的必修之路

从入门到精通&#xff1a;成为文件批量改名高手的必修之路 在数字世界中&#xff0c;我们经常需要处理大量的文件&#xff0c;其中一项重要的任务就是对文件进行重命名。虽然许多操作系统都提供了简单的文件重命名工具&#xff0c;但对于需要批量处理大量文件的用户来说&#…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展&#xff0c;数字化转型已经成为企业转型升级的必由之路。而在数字化转型中&#xff0c;三防平板作为一种重要的工具&#xff0c;可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

什么是LoRA(Low-Rank Adaptation)?

低秩适应&#xff08;LoRA&#xff09; 低秩适应&#xff08;LoRA&#xff09;是一种创新技术&#xff0c;它使得在保持预训练神经网络的基础上进行高效定制成为可能&#xff0c;比如在扩散模型或语言模型中的应用。这种方法的核心优势在于其能够通过仅训练相对较少的参数来实…

泰山派摄像头使用-opencv流程

1. 泰山派添加camera 连接摄像头连接到usb接口,查看dev设备: # 在终端中输入如下命令&#xff0c;可以查看到camera设备资源&#xff1a; ls /dev/video* 检查板卡上的camera设备资源示例 也可以使用v4l2命令查看 v4l2-ctl --list-devices v4l2-ctl --list-devices是一个命令…

人工智能_PIP3安装使用国内镜像源_安装GIT_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_002---人工智能工作笔记0097

接着上一节来看,可以看到,这里 创建软连接以后 [root@localhost Python-3.10.8]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3 [root@localhost Python-3.10.8]# python3 -V Python 3.10.8 [root@localhost Python-3.10.8]# pwd /usr/local/Python-3.10.8 [root@…

绿色化 数据库 MongoDB 和 mysql 安装

绿色化 数据库 MongoDB 和 mysql 安装 【1.1】 前言 为什么要绿色化 安装呢&#xff1f;因为系统老升级&#xff0c;老重装&#xff01;&#xff01;也方便了解下数据库配置和库在那 绿色软件喜欢一般放在 D盘tools目录里 D:\tools\ 数据库 MongoDB D:\tools\MongoDB 数…

【Emgu CV教程】6.11、图像平滑之快速非局部平均去噪

文章目录 一、函数介绍1.FastNlMeansDenoising()函数2.FastNlMeansDenoisingColored() 二、举例1.原始素材2.灰度图FastNlMeansDenoising()快速非局部平均去噪3.彩色图像FastNlMeansDenoisingColored()快速非局部平均去噪 一、函数介绍 “快速非局部平均去噪” 是消除图像噪声…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

1.简介 上一篇中&#xff0c;宏哥说的宏哥在最后提到网站的反爬虫机制&#xff0c;那么宏哥在自己本地做一个网页&#xff0c;没有那个反爬虫的机制&#xff0c;谷歌浏览器是不是就可以验证成功了&#xff0c;宏哥就想验证一下自己想法&#xff0c;其次有人私信宏哥说是有那种…

Python假数据生成库之mimesis使用详解

概要 在软件开发和测试过程中,经常需要使用假数据来模拟真实环境,进行测试、演示或者填充数据库。Python Mimesis 库就是一个强大的工具,可以帮助快速、方便地生成各种类型的假数据。本文将深入探讨 Mimesis 库的功能、用法和示例代码,以帮助大家更好地了解如何利用这个库…

2024年及以后在您的项目中使用的最佳CSS框架

在过去几年中&#xff0c;CSS已经取得了长足的进步。在过去&#xff0c;您可能会使用CSS来创建依赖于HTML表格和CSS浮动作为其布局系统的简单外观的Web应用程序。而现在&#xff0c;您可以设计复杂的交互式用户界面&#xff0c;具有优雅的设计。 尽管CSS变得越来越先进&#x…

【ARMv8M Cortex-M33 系列 8.1 -- RT-Thread 堆内存 检查命令 free 实现及介绍】

文章目录 RT-Thread 堆内存 检查命令 free 实现及介绍rt_memory_info 函数验证 RT-Thread 堆内存 检查命令 free 实现及介绍 在RT-Thread系统中&#xff0c;通常可以通过rt_memory_info函数获取当前的堆内存使用信息&#xff0c;然后你可以包装这个函数来显示剩余的堆空间。rt…

Keil软件生成bin文件

首先需要在keil的魔法棒里将运行脚本加上 加上脚本后&#xff0c;还需要将编译后的文件存放于什么位置 C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o "$LL.bin" "#L" 到这里就可以了

【知识点】CNN中concat与add的区别

cat操作经常用于将特征联合&#xff0c;多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合&#xff1b;而add层更像是信息之间的叠加。 add是在一个特征上增加其语义信息&#xff0c;对最终的图像的分类是有益&#xff1b;cat导致的结果改进可能是由于cat操作通…

嵌入式 系统 开发 - 第一件事 “搭开发环境”

无论是对DSP&#xff0c;FPGA&#xff0c;或其他可编程芯片开发 都要 “搭开发环境” &#xff1a; 懒得写太多字&#xff0c;画个图来扯淡吧&#xff01; 看看实际 怎么搞的 &#xff1a;&#xff09; 这张照片仅仅是 老哥 自己的一个DSP开发实际连结的搞法儿啊&#xff0c…

从零开始手写mmo游戏从框架到爆炸(十六)— 客户端指定回调路由与登录

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 我们这次来把注册、登录、选择英雄&#xff0c;进入主页-选择地图的功能完善。 在这之前&#xff0c;我们还要解决一个问题&#xff0c;就是服务端往客户端发消息的路由问题…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置&#xff0c;将flink的依赖上传到hdfs文件管理系统 1. 实践 &#xff08;1&#xff09;生产集群为cdh集群&#xff0c;从cm上下载配置文件&#xff0c;设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

面试redis篇-03缓存击穿

原理 缓存击穿&#xff1a;给某一个key设置了过期时间&#xff0c;当key过期的时候&#xff0c;恰好这时间点对这个key有大量的并发请求过来&#xff0c;这些并发的请求可能会瞬间把DB压垮 解决方案一&#xff1a;互斥锁 解决方案二&#xff1a;逻辑过期 提问与回答 面试官 &a…