关于java:Linux-系统下-查找文件-命令总结这个很哇塞

39次阅读

共计 5233 个字符,预计需要花费 14 分钟才能阅读完成。

查命令绝对路径:

which 用于查找并显示给定命令的绝对路径, 环境变量中 PATH 参数也能够被查出来。

[root@localhost ~]# which bash
/usr/bin/bash

[root@localhost ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

寻找特定文件:

whereis 命令用来定位指令的二进制程序、源代码文件和 man 手册页等相干文件的门路, 该命令只能用于程序名的搜寻

[root@localhost ~]# whereis --help

语法格局:[whereis [ 选项] 文件名 ]

        -b              #只找二进制文件
        -m              #只找 man 文档
        -s              #只找源代码 

应用 whereis -b 命令找二进制文件,与帮忙手册。

[root@localhost ~]# whereis -b ifconfig
ifconfig: /usr/sbin/ifconfig

[root@localhost ~]# whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz

缓存查找文件:

locate 搜寻一个数据库 /var/lib/mlocatedb, 这个数据库中含有本地所有文件信息,Linux 零碎主动创立这个数据库, 并且每天自动更新一次, 所以应用 locate 命令查不到最新变动过的文件, 为了防止这种状况, 能够在应用 locate 之前, 先应用 updatedb 命令, 手动更新数据库,updatedb 命令会依据 /etc/updatedb.conf 来更新文件.

[root@localhost ~]# yum install -y mlocate
[root@localhost ~]# locate --help

语法格局:[locate [ 选项] 文件名 ]

        -d 目录        #指定数据库所在的目录
        -i             #疏忽大小写差别
        -r             #前面接正则表达式 

应用 locate 命令查问一个文件.

[root@localhost ~]# updatedb 
[root@localhost ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-

遍历文件查找:

find 命令能够说是最重要的查找命令了,该命令参数较多。

[root@localhost ~]# find --help

语法格局:[find [ 目录] [属性] 文件名 ]

        -name         #按文件名查找
        -size         #依据大小查找
        -user         #依据属主查找
        -perm         #依据权限查找
        -type         #依据类型查找
        -time         #按工夫查找
        -inum         #依据 i 节点查问
        -exec         #查找后执行命令 

-name 按文件名查找:

罕用查问通配符

\*     #匹配任意一个或多个字符?#匹配任意一个字符
[]     #指定范畴, 外侧加引号 

查找 /var/ 目录下, 以.log 结尾的文件.

[root@localhost ~]# find /var/ -name "*.log"
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
.... 省略....

查找 /root/ 目录下, 以 [1- 3 之间], 结尾是.txt 的文件

[root@localhost ~]# ls
1.txt  2.txt  3.txt  Catalog  File

[root@localhost ~]# find /root/ -name "[1-3].txt"
/root/1.txt
/root/2.txt
/root/3.txt

查找 /etc/ 目录下, 结尾是 6 个任意字符的文件

[root@localhost ~]# find /etc/ -name "??????"
/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 块 

查找 /etc/ 目录下, 小于 10k 的文件

root@localhost ~]# find /etc/ -size -10k
/etc/crypttab
/etc/.pwd.lock
/etc/environment
.... 省略....

查找 /etc/ 目录下, 大于 1M 的文件

[root@localhost ~]# find /etc/ -size +1M   #查问大于 1M 的文件
/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 依据属主与权限查找

在 /root 目录中查找属于 wang 用户的文件

[root@localhost ~]# find /root/ -user wang
/root/1.txt
/root/2.txt
/root/3.txt
#留神:零碎中要存在该用户, 否则会报谬误.

查找 /boot/ 目录中权限是 644 的文件

[root@localhost ~]# find /boot/ -perm 0644
/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 目录 

查找 /usr/bin/ 目录下, 类型是二进制文件.

[root@localhost ~]# find /usr/bin/ -type f
/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   #示意内容被批改过 

查找 /etc/ 目录下, 在 120 分钟以内, 内容被批改过的文件

[root@localhost ~]# find /etc/ -mmin -120
/etc/
/etc/resolv.conf
/etc/group-
/etc/gshadow-
/etc/group
/etc/gshadow
.... 省略....

查找 /etc/ 目录下, 在 7 天之前, 属性被批改过的文件

[root@localhost ~]# find /etc/ -ctime +7
/etc/resolv.conf
/etc/group-
/etc/gshadow-
.... 省略....

-inum 依据 i 节点查问

有一些文件的硬链接数量很多,有雷同的 i 节点,查找其中一个文件的 i 节点号,一次性删除。

[root@localhost ~]# find ./ -inum 1024 -exec rm{} \;   #删除雷同 I 节点的数据 

-and or 逻辑连接符

-a(and 逻辑与)-o(or  逻辑或 )
在 /etc/ 目录下, 查找大于 1k, 并且小于 10k 的文件

[root@localhost ~]# find /etc/ -size +1k -a -size -10k
/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 命令 {}  \;

{}        #示意 find 查问的后果集
\         #是本义符, 不应用命令别名, 间接应用命令自身
;         #分号是示意语句的完结.

#留神:固定格局, 只能这样写. 留神两头的空格.(公众号:网络工程师阿龙)-----------------------------------------------------------------
阐明:本义符的作用是什么?在 linux 中有一个别名机制,如 rm 删除文件,执行的却是 rm -i(用 which rm 能够查看命令别名),应用 rm 删除文件前会提醒,就是因为 rm - i 这个参数。如果想应用命令原意,能够在加 \ 本义,如:\rm test.txt   则不会提醒,间接删除 

查找 /var/log/ 目录下名字以.log 结尾的文件, 找到后执行 ls -l 显示详细信息.

[root@localhost ~]# find /var/log/ *.log -exec ls -l {} \;
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
....

查找 /etc/ 目录下名字以 ”init*” 结尾的文件, 找到后, 只列出文件, 过滤掉目录, 并执行 ls -l 显示详细信息.

[root@localhost ~]# find /etc/ -name "init*" -a -type f -exec ls -l {} \;

-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

查找 /tmp/ 下, 的 yum.log 文件, 找到后间接删除.

[root@localhost tmp]# find /tmp/ -name yum.log -exec rm {} \;
[root@localhost tmp]#

查找根下, 找对于 lyshark 用户的所有文件, 找到后间接删除.

[root@localhost ~]# find / -user lyshark -exec rm -r {} \;

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
#rm -r 连带目录一起删除. 报错起因:-exec 不适宜大量传输, 速率慢导致.

在根下, 查找 lyshark 用户的文件, 找到后删除, 删除前会提醒是否删除.

[root@localhost ~]# find / -user lyshark -ok rm -r {} \;
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
# -ok 的应用和 -exec 是一样的, 区别是 -ok, 执行时会提醒你是否进行下一步操作.

起源:http://u6.gg/kq67b

正文完
 0