在Linux系统的文件与目录的管理上,不外乎显示属性、拷贝、删除文件、移动文件或目录、重命名等常用操作,由于文件与目录的管理在 Linux当中是很重要的,尤其是每个人自己家目录的数据也都需要管理,所以我们来谈一谈有关文件与目录的一些基础管理部分吧.
ls 显示目录或文件 ls命令用来显示目标列表,在Linux系统中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件,其参数我们会在下面进行说明.
[root@localhost ~] 命令语法:[ ls [选项] 文件或目录 ] -a -A -d -f -h -i -l -n -S -t -r -R -Z --full-time --time=atime/ctime/mtime
实例1: 使用 ls -lh
参数查询所在目录详细信息
[root@localhost ~] total 0 -rw-r--r--. 1 root root 0 Nov 13 09:36 admin drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark 第1项: 文件权限位 第2项: 引用计数(文件:硬链接数 目录:目录下的子目录个数) 第3项: 文件的所有者(属主->此处为root) 第4项: 文件的所属组(属组->此处为root) 第5项: 文件大小(默认单位字节byte) 第6项: 最后一次修改时间 第7项: 文件名
实例2: 使用 ls -lh --full-time
显示文件创建的详细时间信息
[root@localhost ~] total 0 -rw-r--r--. 1 root root 0 2018-11-13 09:36:25.172274787 -0500 admin drwxr-xr-x. 2 root root 6 2018-11-13 09:36:13.292275532 -0500 lyshark
实例3: 使用 ls -lhS
显示文件,并按照文件由大到小打印
[root@localhost ~] total 0 drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark -rw-r--r--. 1 root root 0 Nov 13 09:36 admin
实例4: 使用 ls -lhrS
显示文件,并按照文件由小到大打印
[root@localhost ~] total 0 -rw-r--r--. 1 root root 0 Nov 13 09:36 admin drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark
实例5: 使用 ls -lZ
显示文件,并显示SeLinux安全上下文
[root@localhost ~] -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 admin drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 lyshark
cd 目录跳转与切换 cd命令用来切换工作目录至dirname,其中dirName表示法可为绝对路径或相对路径,若目录名称省略,则变换至使用者的home directory,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录,其参数我们会在下面进行说明.
[root@localhost ~] 命令语法:[ cd [选项] 目录 ] cd cd ~ cd - cd .. cd ../.. cd !$
实例1: 使用 cd ~ or cd
切换到用户家目录
[root@localhost etc] /etc [root@localhost etc] [root@localhost ~] /root
实例2: 使用 cd ..
切换上一级目录里去
[root@localhost ~] /root [root@localhost ~] [root@localhost /] /
实例3: 使用 cd ../..
切换上两级目录里去
[root@localhost sysconfig] /etc/sysconfig [root@localhost sysconfig] [root@localhost /] /
mkdir 创建新目录 mkdir命令用来创建目录,该命令创建由dirname命名的目录,如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录,如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录,在创建目录时,应保证新建的目录与它所在目录下的文件没有重名,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ mkdir [选项] 新目录名 ] -v -p -Z -m
实例1: 使用 mkdir -p
递归创建目录
[root@localhost ~] [root@localhost ~] total 0 drwxr-xr-x. 2 root root 6 Nov 13 09:56 lyshark
实例2: 使用 mkdir -m
建立目录时同时设置权限.
[root@localhost ~] [root@localhost ~] total 0 d---------. 2 root root 6 Nov 13 10:02 lyshark
touch 创建空文件 touch命令有两个功能,一是用于把已存在文件的时间标签更新为系统当前的时间,它们的数据将原封不动地保留下来,二是用来创建新的空文件,多数情况下我们只是用它来创建空文件,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ touch [选项] 文件名 ] -a -c -m -t
实例1: 使用 touch
命令在当前目录下创建一个空文件lyshark.txt.
[root@localhost ~] total 0 [root@localhost ~] [root@localhost ~] total 0 -rw-r--r--. 1 root root 0 Nov 13 10:32 lyshark.txt
实例2: 使用 touch -t
命令修改文件的时间改成15年11月03日11点59分.
[root@localhost ~] total 0 -rw-r--r--. 1 root root 0 2018-11-13 10:35:50.639051120 -0500 lyshark.txt [root@localhost ~] [root@localhost ~] total 0 -rw-r--r--. 1 root root 0 2015-11-03 11:59:00.000000000 -0500 lyshark.txt
cp 复制文件或目录 cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录,它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ cp [选项] 源文件或目录 目标目录 ] -a -d -f -i -p -r -s -u
实例1: 使用 cp -a
命令实现文件拷贝,将/etc/的文件拷贝到/tmp/目录下.
[root@localhost ~] [root@localhost ~] total 1.1M -rw-r--r--. 1 root root 16 Oct 13 12:37 adjtime -rw-r--r--. 1 root root 1.5K Jun 7 2013 aliases -rw-r--r--. 1 root root 12K Oct 13 12:39 aliases.db drwxr-xr-x. 2 root root 236 Oct 13 12:34 alternatives ....省略....
实例2: 使用 cp -s
命令实现拷贝文件,将/etc/passwd创建软链接到/tmp/目录下.
[root@localhost ~] [root@localhost ~] total 0 lrwxrwxrwx. 1 root root 11 Nov 13 10:09 passwd -> /etc/passwd
实例3: 使用 cp -a
命令实现一次拷贝多个文件,到/tmp/目录下.
[root@localhost ~] [root@localhost ~] total 8.0K -rw-r--r--. 1 root root 898 Oct 13 12:37 passwd ----------. 1 root root 714 Oct 13 12:37 shadow
mv 移动文件或目录 mv命令用来对文件或目录重新命名,或将文件从一个目录移到另一个目录中.source表示源文件或目录,target表示目标文件或目录.如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ mv [选项] 源文件或目录 目标目录 ] -f -i -u
实例1: 使用 mv
命令实现将/etc/passwd移动到/tmp目录下.
[root@localhost ~] [root@localhost ~] total 4.0K -rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd
实例2: 使用 mv
命令实现一次移动多个文件,下面将/etc/passwd和/etc/shadow 移动到/tmp目录下.
[root@localhost ~] [root@localhost ~] total 8.0K -rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd ----------. 1 0 root 714 Oct 13 12:37 shadow
实例3: 使用 mv
命令实现重命名,将当前目录下的lyshark改名为linux.
[root@localhost ~] total 0 drwxr-xr-x. 2 root root 6 Nov 13 10:19 lyshark [root@localhost ~] [root@localhost ~] total 0 drwxr-xr-x. 2 root root 6 Nov 13 10:19 linux
rm 删除文件或目录 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变,使用rm命令要格外小心,因为一旦删除了一个文件,就无法再恢复它,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ rm [选项] 文件或目录 ] -f -r -i -fr
实例1: 使用 rm -fr
命令删除当前目录下的linux目录.
[root@localhost ~] linux [root@localhost ~] [root@localhost ~]
实例2: 使用 rm -fr *
命令使用通配符,删除指定文件夹内的所有文件.
[root@localhost lyshark] 1 10 2 3 4 5 6 7 8 9 [root@localhost lyshark] [root@localhost lyshark]
file 判断文件的类型 file命令用来检测给定文件的类型,file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ file [选项] 文件或目录 ] -b -c -f 文件名 -z
实例1: 使用 file
命令判断/etc/passwd 和 /bin/bash 文件的格式.
[root@localhost ~] /etc/passwd: ASCII text [root@localhost ~] /bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped
实例2: 使用 file -z
命令读取lyshark.tar.gz压缩包文件属性.
[root@localhost ~] total 9.4M -rw-r--r--. 1 root root 9.4M Nov 13 10:51 lyshark.tar.gz [root@localhost ~] lyshark.tar.gz: POSIX tar archive (GNU) , (gzip compressed data, from Unix, last modified: Tue Nov 13 10:51:13 2018)
实例3: 使用 file -f
命令在文件中读取指定行,并依次判断文件.
[root@localhost ~] /etc/passwd /etc/shadow /bin/bash /bin/ls [root@localhost ~] /etc/passwd: ASCII text /etc/shadow: ASCII text /bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ec3f3e5e8160c9917e8a4b896fe9044748472991, stripped
stat 查询文件状态 stat命令用于显示文件的状态信息,stat命令的输出信息比ls命令的输出信息要更详细,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ stat [选项] 文件或目录 ] -L -f -t
实例1: 使用 stat
命令查询/bin/bash和/etc/passwd的相信信息.
[root@localhost ~] File: ‘/bin/bash’ Size: 964544 Blocks: 1888 IO Block: 4096 regular file Device: fd00h/64768d Inode: 50340311 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:shell_exec_t:s0 Access: 2018-11-13 09:33:12.197999579 -0500 Modify: 2017-09-26 09:14:20.000000000 -0400 Change: 2018-10-13 12:32:43.377997461 -0400 Birth: - [root@localhost ~] File: ‘/etc/passwd’ Size: 898 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 17175992 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:passwd_file_t:s0 Access: 2018-11-13 10:19:51.777111271 -0500 Modify: 2018-10-13 12:37:59.147984612 -0400 Change: 2018-11-13 10:19:05.849114152 -0500 Birth: -
实例2: 使用 stat -f
命令显示系统的状态信息.
[root@localhost ~] File: "/bin/bash" ID: fd0000000000 Namelen: 255 Type: xfs Block size: 4096 Fundamental block size: 4096 Blocks: Total: 4452864 Free: 4155020 Available: 4155020 Inodes: Total: 8910848 Free: 8877953
ln 创建链接文件 ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接,如果要创建符号连接必须使用”-s”选项,符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ stat [选项] 文件或目录 ] -L -d -f -i -s
实例1: 使用 ln
命令建立一个硬链接.
[root@localhost ~] total 944K 33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash [root@localhost ~] [root@localhost ~] total 1.9M 33844798 -rwxr-xr-x. 2 root root 942K Sep 26 2017 bash 33844798 -rwxr-xr-x. 2 root root 942K Sep 26 2017 bash_ln
实例2: 使用 ln -s
命令建立一个软链接.
[root@localhost ~] total 944K 33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash [root@localhost ~] [root@localhost ~] total 944K 33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash 33959316 lrwxrwxrwx. 1 root root 4 Nov 13 11:06 bash_link -> bash
文件内容查阅命令 如果我们要查阅一个文件的内容时,这里有相当多有趣的命令可以来分享一下,最常使用的显示文件内容的命令可以说是 cat 与 more 及 less 了,此外如果我们要查看一个很大型的文件(好几百MB时),但是我们只需要后端的几行字而已,此时我们可以使用tail命令查看后面的行,当然是用tac命令也可以达到相应效果,下面开始说说各个命令的用途吧.
cat 文本打印命令 cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容,为了控制滚屏,可以按Ctrl+S键停止滚屏,按Ctrl+Q键可以恢复滚屏,按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ cat [选项] 文件名 ] -b -E -T -n
实例1: 使用 cat -n
命令给指定文本标号并打印.
[root@localhost ~] 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync :x:5:0:sync :/sbin:/bin/sync ....省略....
实例2: 使用 cat -E
命令显示文本结束符$.
[root@localhost ~] root:x:0:0:root:/root:/bin/bash$ bin:x:1:1:bin:/bin:/sbin/nologin$ daemon:x:2:2:daemon:/sbin:/sbin/nologin$ adm:x:3:4:adm:/var/adm:/sbin/nologin$ lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$ sync :x:5:0:sync :/sbin:/bin/sync$shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$ ....省略....
head 显示开头文本 head命令用于显示文件的开头的内容,在默认情况下,head命令显示文件的头10行内容,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ head [选项] 文件名 ] -c 10 -n 10 -v -q
实例1: 使用 head -c
命令显示文本的前20个字符.
[root@localhost ~] root:x:0:0:root:/roo [root@localhost ~]
实例2: 使用 head -n
命令显示文本前3行.
[root@localhost ~] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
tail 显示结尾文本 tail命令用于输入文件中的尾部内容,tail命令默认在屏幕上显示指定文件的末尾10行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题,如果没有指定文件或者文件名为”-“,则读取标准输入,如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项.N值后面可以有后缀:b表示512,k表示1024,m表示1048576(1M),其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ tail [选项] 文件名 ] -c 10 -n 10 -f --pid=PID
实例1: 使用 tail -n
命令显示文本后3行.
[root@localhost ~] postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin lyshark:x:1000:1000:lyshark:/home/lyshark:/bin/bash
实例2: 使用 tail -f
命令动态监控一个文件.
[root@localhost ~] Nov 13 10:01:01 localhost systemd: Starting Session 3 of user root. Nov 13 10:10:54 localhost kernel: e1000: ens32 NIC Link is Down Nov 13 10:10:58 localhost kernel: e1000: ens32 NIC Link is Up Nov 13 10:10:58 localhost NetworkManager[772]: <info> ....省略....
实例3: 使用 tail --pid=PID
命令监视一个进程.
[root@localhost ~] PID TTY TIME CMD 1404 pts/0 00:00:00 bash 11441 pts/0 00:00:00 ps [root@localhost ~] [root@localhost ~] tail : warning: PID ignored; --pid=PID is useful only when following....省略....
实例4: 使用 tail -n +5
命令从第五行以后开始打印.
[root@localhost ~] lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync :x:5:0:sync :/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ....省略....
实例5: 使用 tail -n +5 | head -n 3
命令从第五行开始打印,向下打印2行内容.
[root@localhost ~] lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync :x:5:0:sync :/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
nl 指定格式输出文本 nl命令读取file参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出.在输出中,nl命令根据您在命令行中指定的标志来计算左边的行,输入文本必须写在逻辑页中,每个逻辑页有头、主体和页脚节(可以有空节),除非使用-p选项,nl命令在每个逻辑页开始的地方重新设置行号.可以单独为头、主体和页脚节设置行计算标志其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ nl [选项] 文件名 ] -c 10 -b a -b t -n ln -n rn -n rz -w
实例1: 使用 nl -b a
命令给文本标号打印(类似于cat -n).
[root@localhost ~] 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync :x:5:0:sync :/sbin:/bin/sync ....省略....
实例2: 使用 nl -b a -n rz
命令列出文本并给予编号,空格0填充.
[root@localhost ~] 000001 root:x:0:0:root:/root:/bin/bash 000002 bin:x:1:1:bin:/bin:/sbin/nologin 000003 daemon:x:2:2:daemon:/sbin:/sbin/nologin 000004 adm:x:3:4:adm:/var/adm:/sbin/nologin 000005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ....省略....
实例3: 使用 nl -b a -n rz -w 3
命令列出文本并给予编号,编号填充2行0.
[root@localhost ~] 001 root:x:0:0:root:/root:/bin/bash 002 bin:x:1:1:bin:/bin:/sbin/nologin 003 daemon:x:2:2:daemon:/sbin:/sbin/nologin 004 adm:x:3:4:adm:/var/adm:/sbin/nologin 005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ....省略....
od 非纯文本文件打印 od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符,常见的文件为文本文件和二进制文件,此命令主要用来查看保存在二进制文件中的值,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ od [选项] 文件名 ] -t a -t c -t d -t f -t o -t x
实例3: 使用 od -t a
命令使用默认格式输出.
[root@localhost ~] 0000000 0000020 n sp c d sp " $ @ " nl 0000032
实例3: 使用 od -t c
命令使用ASCII输出.
[root@localhost ~] 0000000 0000020 n c d " $ @ " \n 0000032
more 翻页浏览文本 more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作,more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令),其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ more 文件名 ] 空格 B Enter /字符串 :f q或Q
实例1: 使用 more
命令打开一个文本.
[root@localhost ~] Oct 13 12:39:15 localhost journal: Runtime journal is using 6.0M (max allowed 48.7M, tryi ng to leave 73.0M free of 481.1M available → current limit 48.7M). Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpuset Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpu Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpuacct Oct 13 12:39:15 localhost kernel: Linux version 3.10.0-862.el7.x86_64 (mockbuild@x86-034. build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) --More--(0%)
less 可控翻页浏览 less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览.用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页,要退出less程序,应按Q键,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ less [选项] 文件名 ] -e -f -l -N 空格 [pageup] /字符串 ?字符串 q
实例1: 使用 less
命令打开一个文本.
[root@localhost ~] Oct 13 12:39:15 localhost journal: Runtime journal is using 6.0M (max allowed 48.7M, tryi ng to leave 73.0M free of 481.1M available → current limit 48.7M). Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpuset Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpu Oct 13 12:39:15 localhost kernel: Initializing cgroup subsys cpuacct Oct 13 12:39:15 localhost kernel: Linux version 3.10.0-862.el7.x86_64 (mockbuild@x86-034. build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) /var/log/messages
命令与文件的查找 文件的搜寻可就厉害了,因为我们常常需要知道那个文件放在哪里,才能够对该文件进行一些修改或维护等动作,有些时候某些软件配置档的档名是不变的,但是各Linux发行版,放置的目录则不同.此时就得要利用一些搜寻命令将该配置档的完整档名捉出来,这样才能修改嘛.下面我们将介绍这些常用查找命令.
which 查命令绝对路径 which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录,which指令会在环境变量$PATH设置的目录里查找符合条件的文件,也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ which [选项] 命令名 ] -n 长度 -p 长度 -w
实例1: 使用 which
命令查看一个命令是在那个目录里.
[root@localhost ~] /usr/bin/bash [root@localhost ~] alias ls ='ls --color=auto' /usr/bin/ls
whereis 寻找特定文件 whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径,该命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息,其参数我们会在下面进行说明.
[root@localhost ~] 语法格式:[ whereis [选项] 文件名 ] -b -m -s
实例1: 使用 where -b
命令只找二进制文件.
[root@localhost ~] ifconfig: /usr/sbin/ifconfig [root@localhost ~] ifconfig: /usr/share/man/man8/ifconfig.8.gz
locate 缓存查找文件 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocatedb,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件,为了避免这种情况,可以在使用locate之前,先使用updatedb命令,,手动更新数据库,updatedb命令会根据/etc/updatedb.conf来更新文件,其参数我们会在下面进行说明.
注意:这里需要注意的是,locate这个命令默认是不安装的,我们可以执行 yum install -y mlocate
来安装它.
[root@localhost ~] 语法格式:[ locate [选项] 文件名 ] -d 目录 -i -r
实例1: 使用 locate
命令查询一个文件.
[root@localhost ~] [root@localhost ~] /etc/passwd /etc/passwd-
find 遍历文件查找 -name 按文件名查找
实例1: 查找/var/目录下,以.log结尾的文件.
[root@localhost ~] /var/log/tuned/tuned.log /var/log/audit/audit.log /var/log/anaconda/X.log /var/log/anaconda/program.log ....省略....
实例2: 查找/root/目录下,以[1-3之间],结尾是.txt的文件
[root@localhost ~] 1.txt 2.txt 3.txt Catalog File [root@localhost ~] /root/1.txt /root/2.txt /root/3.txt
实例3: 查找/etc/目录下,开头是6个任意字符的文件
[root@localhost ~] /etc/grub.d /etc/grub.d/README /etc/shells /etc/init.d ....省略....
-size 根据大小查找 单位是 block 数据块 一块是512字节 1M -> 1024k -> 2048 块 (1块是0.5k 也就是512字节) 100M -> 102400k -> 204800块
实例1: 查找/etc/目录下,小于10k的文件
root@localhost ~] /etc/crypttab /etc/.pwd.lock /etc/environment ....省略....
实例2: 查找/etc/目录下,大于1M的文件
[root@localhost ~] /etc/udev/hwdb.bin /etc/selinux/targeted/active/policy.kern /etc/selinux/targeted/contexts/files/file_contexts.bin /etc/selinux/targeted/policy/policy.31 ....省略....
-user 根据属主查找 实例1: 在/root目录中查找属于wang用户的文件
[root@localhost ~] /root/1.txt /root/2.txt /root/3.txt
-perm 根据权限查找 实例1: 查找/boot/目录中权限是644的文件
[root@localhost ~] /boot/grub2/device.map /boot/grub2/i386-pc/gcry_rmd160.mod /boot/grub2/i386-pc/acpi.mod /boot/grub2/i386-pc/gcry_rsa.mod ....省略....
-type 根据类型查找 -type f 二进制文件(普通文件) -type l 软链接文件 -type d 目录
实例1: 查找/usr/bin/目录下,类型是二进制文件.
[root@localhost ~] /usr/bin/cp /usr/bin/gzip /usr/bin/alias /usr/bin/csplit /usr/bin/bash ....省略....
-time 按时间查找 按天数 ctime atime mtime 按分钟 cmin amin mmin c change a access m modify
实例1: 查找/etc/目录下,在120分钟以内,内容被修改过的文件
[root@localhost ~] /etc/ /etc/resolv.conf /etc/group- /etc/gshadow- /etc/group /etc/gshadow ....省略....
实例2: 查找/etc/目录下,在7天之前,属性被修改过的文件
[root@localhost ~] /etc/resolv.conf /etc/group- /etc/gshadow- ....省略....
-inum 根据i节点查询 实例1: 有一些文件的硬链接数量很多,有相同的i节点,查找其中一个文件的i节点号,一次性删除。
-and or 逻辑连接符
实例1: 在/etc/目录下,查找大于1k,并且小于10k的文件
[root@localhost ~] /etc/ /etc/grub.d/00_header /etc/grub.d/20_ppc_terminfo /etc/grub.d/00_tuned /etc/rc.d/init.d/README /etc/rc.d/init.d/netconsole /etc/rc.d/init.d/network /etc/pam.d ....省略....
-exec 命令执行连接符 [查询格式] find ... -exec 命令 {} \; {} \ ; ----------------------------------------------------------------- 说明: 转义符的作用是什么? 在linux中有一个别名机制,如rm 删除文件,执行的却是rm -i(用which rm 可以查看命令别名), 使用rm 删除文件前会提示,就是因为rm -i这个参数。如果想使用命令原意,可以在加\转义, 如:\rm test.txt 则不会提示,直接删除
实例1: 查找/var/log/目录下名字以.log结尾的文件,找到后执行 ls -l 显示详细信息.
[root@localhost ~] total 1176 drwxr-xr-x. 2 root root 204 Sep 18 09:12 anaconda drwx------. 2 root root 23 Sep 18 09:12 audit -rw-------. 1 root root 53001 Sep 19 00:57 boot.log -rw-------. 1 root utmp 384 Sep 18 09:22 btmp drwxr-xr-x. 2 chrony chrony 6 Apr 12 13:37 chrony -rw-------. 1 root root 3523 Sep 19 01:01 cron -rw-r--r-- 1 root root 119414 Sep 19 00:57 dmesg -rw-r--r-- 1 root root 119599 Sep 18 23:35 dmesg.old -rw-r--r--. 1 root root 1320 Sep 19 00:23 firewalld -rw-r--r--. 1 root root 193 Sep 18 09:05 grubby_prune_debug ....
实例2: 查找/etc/目录下名字以”init*“开头的文件,找到后,只列出文件,过滤掉目录,并执行 ls -l 显示详细信息.
[root@localhost ~] -rw-r--r--. 1 root root 511 Apr 11 01:09 /etc/inittab -rw-r--r--. 1 root root 798 Apr 11 01:09 /etc/sysconfig/init -rwxr-xr-x. 1 root root 5419 Jan 2 2018 /etc/sysconfig/network-scripts/init.ipv6-global -rw-r--r--. 1 root root 30 Apr 11 14:12 /etc/selinux/targeted/contexts/initrc_context
实例3: 查找/tmp/下,的yum.log文件,找到后直接删除.
[root@localhost tmp] [root@localhost tmp]
实例4: 查找根下,找关于lyshark用户的所有文件,找到后直接删除.
[root@localhost ~] find: ‘/proc/1465/task/1465/fd/6’: No such file or directory find: ‘/proc/1465/task/1465/fdinfo/6’: No such file or directory find: ‘/proc/1465/fd/5’: No such file or directory find: ‘/proc/1465/fdinfo/5’: No such file or directory find: ‘/root/Catalog’: No such file or directory find: ‘/home/lyshark’: No such file or directory
实例5: 在根下,查找lyshark用户的文件,找到后删除,删除前会提示是否删除.
[root@localhost ~] find: ‘/proc/1777/task/1777/fd/6’: No such file or directory find: ‘/proc/1777/task/1777/fdinfo/6’: No such file or directory < rm ... /root/LyShark > ? y