首页 > 其他分享 >文件的查找以及软硬链接使用

文件的查找以及软硬链接使用

时间:2024-01-24 12:57:07浏览次数:26  
标签:文件 软硬 find etc 查找 搜索 txt root 链接

文件查找的常用命令

  • which

  • whereis

  • grep

  • locate

  • find

1、which

which命令用于查找系统可执行命令的路径。它通常用于查找命令是否存在以及其所在的位置。

which command

这个命令会查找command命令是否存在,并显示其路径。

2、whereis

whereis命令用于查找二进制文件、源代码文件和帮助文件的位置。

whereis command

这个命令会查找command命令的二进制文件、源代码文件和帮助文件的位置。

3、locate

locate命令用于快速查找文件名。它使用系统的数据库(通常是mlocateupdatedb命令生成的数据库)来查找文件,因此查找速度较快。但是,如果文件数据库未更新,可能找不到最新创建的文件。

数据库位于/var/lib/mlocate/mlocate.db,这个数据库中存有本地所有的文件信息;这个数据库是Linux自动创建并每天自动更新维护。

相关的配置信息在/etc/updatedb.conf,查看定时任务信息在/etc/cron.daily/mlocate.cron

locate filename.txt
updatedb(更新数据库)

4、grep

grep命令用于在文件中搜索指定的字符串模式。虽然它主要用于搜索文件内容,但在文件查找方面也非常有用。

grep [OPTIONS] PATTERN [FILE...]
  • OPTIONS: 可选参数,用于指定一些选项,例如是否忽略大小写、递归搜索等。

  • PATTERN: 要搜索的模式,可以是简单字符串或正则表达式

  • FILE: 要搜索的文件名,可以省略,默认为标准输入(从管道或重定向中读取)

OPTIONS如下:

  1. -i:忽略大小写。使用此选项,搜索将不区分大小写。

  2. -v:反向搜索。打印不包含匹配模式的行。

  3. -n:打印匹配行的行号。

  4. -r:递归搜索目录。在指定目录及其子目录中递归搜索。

  5. -w:匹配整个单词。只匹配包含整个单词的行,而不是部分匹配。

  6. -E:使用扩展的正则表达式。允许使用更多的正则表达式元字符。

  7. -F:将模式视为固定字符串。不将模式视为正则表达式,而是按照普通的字符串进行搜索。

  8. -m NUM:仅显示前NUM个匹配。当找到指定数量的匹配项后,停止搜索。

  9. --color=auto:将匹配的文本高亮显示。

  10. --exclude=PATTERN:在搜索时排除指定模式的文件。

  11. --include=PATTERN:仅搜索指定模式的文件。

  12. -q:安静模式。不显示匹配的行,只返回是否找到匹配项。

以下是一些常见的grep命令示例:

在文件中搜索字符串:

grep "keyword" filename.txt
[root@fishman-160 ~]# cat a.txt
hello python

today

tomorrow

eof`

[root@fishman-160 ~]# grep -v '^$' a.txt #'^$'代表空行
hello python
today
tomorrow
eof`

这个命令会在filename.txt文件中搜索包含字符串"keyword"的行,并将匹配的行打印出来。

忽略大小写搜索:

grep -i "keyword" filename.txt

使用-i选项可以忽略搜索时的大小写差异,使搜索不区分大小写。

递归搜索目录:

grep -r "pattern" /path/to/search

使用-r选项可以在指定目录及其子目录中递归搜索指定的模式。

使用正则表达式搜索:

grep -E "pattern" filename.txt
[root@fishman-160 ~]# grep -E -n 'noglin|root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

使用-E选项可以让grep使用扩展的正则表达式进行搜索。

打印匹配的行号:

grep -n "pattern" filename.txt

[root@fishman-160 ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
46:kc:x:1000:1000:kc:/home/kc:/bin/bash
48:test1:x:1300:1000::/media/test1:/bin/bash

使用-n选项可以在打印匹配的行时同时显示行号。

反向搜索(排除匹配项):

grep -v "pattern" filename.txt
[root@fishman-160 ~]# ps -aux | grep httpd | grep -v 'grep'
root        2007  0.2  0.5 265096 11196 ?        Ss   14:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      2008  0.0  0.4 269796  8376 ?        S    14:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      2009  0.1  0.7 2703900 14060 ?       Sl   14:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      2010  0.1  0.5 2572772 9968 ?        Sl   14:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      2011  0.1  0.5 2507236 9968 ?        Sl   14:40   0:00 /usr/sbin/httpd -DFOREGROUND

5、find

find命令用于在文件系统中递归查找文件和目录。它是Unix和类Unix系统中非常强大和常用的命令之一。find命令可以根据不同的条件搜索文件,如文件名、文件类型、大小、时间戳、权限等等。

基础语法

find [path] [expression]

参数

  1. -name pattern:按照文件名进行搜索,pattern是要搜索的文件名模式。可以使用通配符来匹配多个文件名。

  2. -iname pattern:类似于-name,但忽略搜索时的大小写。

  3. -type type:按照文件类型进行搜索,type可以是以下之一:

    • f:普通文件

    • d:目录

    • l:符号链接

    • b:块设备文件

    • c:字符设备文件

    • s:套接字(socket)

    • p:命名管道(FIFO)

  4. -size n[cwbkMG]:按照文件大小进行搜索,n表示文件大小,后面的字符(cwbkMG)表示大小的单位(字节、2字节、512字节块、K字节、M字节、G字节)。

  5. -mtime n:按照文件的修改时间进行搜索,n表示天数。-mtime +n表示修改时间在n天前,-mtime -n表示修改时间在n天内。

  6. -user user:按照文件的属主进行搜索,user是用户名。

  7. -group group:按照文件的属组进行搜索,group是组名。

  8. -perm mode:按照文件的权限进行搜索,mode是三位八进制数,用于匹配文件权限。

  9. -empty:搜索空文件或空目录。

  10. -maxdepth n:设置搜索的最大递归深度。

  11. -mindepth n:设置搜索的最小递归深度。

  12. -print:将搜索到的文件输出到标准输出。

  13. -delete:删除搜索到的文件。

  14. -exec command {} \;:对搜索到的每个文件执行指定的命令,{}表示找到的文件名,\;表示命令结束。

  15. -xdev:限制find命令仅在指定的文件系统上进行搜索

  16. -mount:在查找文件时不跨越文件系统mount点

  17. -follow:如果find命令遇到符号链接文件,就追踪至链接所指向的文件

  18. find命令支持连接符(operators)来组合多个条件进行复杂的搜索。常见的三种连接符是-o(逻辑或)、-a(逻辑与)和-not(逻辑非)。

  19. +表示超过,-表示低于

以下是一些常见的find命令使用示例:

1、在当前目录及其子目录中搜索名为"filename.txt"的文件:

find . -name "filename.txt"

.表示当前目录,-name用于指定文件名匹配的模式。

例:

[root@fishman-160 ~]# find ./ -maxdepth 1 -name "*.txt" 
./4.txt
./1.txt
./aa.txt
./test.txt
./2.txt
./3.txt

2、在指定目录中搜索所有的目录:

find /path/to/search -type d

-type d表示只搜索目录。

例:

[root@fishman-160 ~]# find /etc -maxdepth 1 -type d 
/etc
/etc/dnf
/etc/fonts
/etc/libreport
/etc/sgml
/etc/ssh
/etc/skel
/etc/java
/etc/jvm
/etc/jvm-commmon
/etc/logrotate.d
/etc/X11
/etc/terminfo
/etc/libssh
/etc/pki
/etc/rpm
/etc/lvm
/etc/xml
...

3、在指定目录中搜索大小超过100MB的文件:

find /path/to/search -type f -size +100M

-type f表示只搜索文件,-size +100M表示搜索大小大于100MB的文件。

例:

[root@fishman-160 ~]# find /etc -size +50k -a -size -100k -type f | xargs ls -lh

#xargs:用于将find命令找到的文件列表作为参数传递给后面的ls命令。

4、搜索修改时间在30天以前的文件:

find /path/to/search -type f -mtime +30

-mtime +30表示搜索修改时间在30天以前的文件。

例:

[root@fishman-160 ~]# find -mtime -3 #搜索位于当前目录及其子目录下,最近3天内修改过的文件,
.
./.bash_history
./xuegod.sh
./.bashrc
./.viminfo
./4.txt
./1.txt
./.Xauthority
./.lesshst
./file.bak.tar.gz
./aa.txt
./test.txt
./2.txt
./3.txt
./ls
./dead.letter

5、搜索属主为"username"的文件:

find /path/to/search -type f -user username

-user username表示搜索属主为"username"的文件。]

例:

[root@fishman-160 ~]# find /home -xdev \( -user  kc -type d \) | xargs ls -ld
drwx------. 4 kc kc  42 7月  31 16:16 /home/kc
drwxr-xr-x. 4 kc kc  39 7月   6 13:26 /home/kc/.mozilla
drwxr-xr-x. 2 kc kc   6 1月  20 2022 /home/kc/.mozilla/extensions
drwxr-xr-x. 2 kc kc   6 1月  20 2022 /home/kc/.mozilla/plugins
drwxr-xr-x  8 kc kc 158 6月  13 23:08 /home/kc/nginx-1.25.1

6、搜索具有特定权限的文件:

find /path/to/search -type f -perm 644

例:

[root@fishman-160 ~]# find ~ -perm -u=s -type f | xargs ls -l
-rwsr-xr-x 1 root root 94 7月  31 13:30 /root/xuegod.sh

7、对查询的内容执行相应的操作

例:查找文件大小大于1GB的文件,可以使用以下命令

[root@fishman-160 ~]# find ./ -type f -size +1G | xargs du -h
1.2G	./b.txt

8、查找到大于1G的文件,并删除

[root@fishman-160 ~]# find ./ -type f -size +1G  -exec rm -rf {} +
[root@fishman-160 ~]# ls b.txt
ls: 无法访问'b.txt': 没有那个文件或目录

-exec中的+\;的区别

-e xec选项使用+表示将所有匹配的文件作为一个参数传递command
-exec选项使用\;表示对于每一个匹配的文件,都单独调用一次command

image-20230731172155843

6、命令判断

;               #分号;  不考虑指令的相关性,连续执行
&&              #逻辑与,它是只有在前面的命令执行成功后,后面的命令才会去执行   ls xx && cd /etc
||              #逻辑或,如果前面的命令执行成功,后面的命令就不去执行了;或者如果前面的执行不成功,才会去执行后面的命令

标签:文件,软硬,find,etc,查找,搜索,txt,root,链接
From: https://www.cnblogs.com/kcloveworld/p/17984417

相关文章

  • 硬链接和软连接
    1、硬链接硬连接指通过索引节点号来进行连接。inode是可以对应多个文件名的在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是......
  • 冒泡排序、选择排序、二分查找
    1publicstaticvoidmain(String[]args){2//冒泡排序3//定义一个数组,存储一些数据4int[]arr={5,3,1,2,9,6};5System.out.println("=========冒泡排序==========");6//定义一个循环轮数7fo......
  • [转]Linux下的lds链接脚本详解
    [转]Linux下的lds链接脚本详解转载WZM35588622016-12-0611:40:20文章标签QT文章分类运维阅读数2546 [转]Linux下的lds链接脚本详解转载自: http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml  一、概论每一个链接过程都由链接......
  • 如何查找SpringBoot应用中的请求路径(不使用idea)
    背景昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多、这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚。除了自己写代码输出servlet的路径和类外,发现了一个我之前没用过的方法:SpringBootActuator,分享给大家。......
  • Git远程链接仓库命令
    1)查看仓库已配置的远程源>:gitremote>:gitremote-v 2)查看remote命令帮助文档>:gitremote-h 3)删除远程源>:gitremoteremove源名eg:gitremoteremoveorigin 4)添加远程源>:gitremoteadd源名源地址>:gitremoteaddorginhttps://gitee.......
  • arm lds链接脚本的解释
    SECTIONS{.text0×1000:{*(.text)_etext=.;}.mdata0×2000:AT(ADDR(.text)+SIZEOF(.text)){_data=.;*(.data);_edata=.;}.bss0×3000:{_bstart=.;*(.bss)*(COMMON);_bend=.;}}  这段链接脚本是一个简单的Li......
  • 无涯教程-CSS - 链接(Links)
    当无涯教程讨论CSS的伪类时,将重新访问相同的属性。:link    : 表示普通的、未被访问的链接。:visited  : 表示用户已访问的链接。:hover   : 表示鼠标指针位于链接的上方。:active  : 表示链接被点击的时刻。记住a:hover必须在CSS定义中的a:......
  • 二叉查找树
    二叉查找树是类似于一种堆的数据结构(没有重复元素)二叉查找有一个性质:中序遍历得到的就是关键码升序排列的序列这个结构支持很多的操作insert(intval):新增一个关键码为val的节点get(intval):查找关键码为val的节点getnext(intval):查找val的前驱(严格大于val的最小值,可能val......
  • 二分查找
    二分查找一、应用场景​ 一个很常见的情景:猜数——猜大了就小一点,猜小了就大一点。我们在这个例子中发现,不停的缩小范围,舍弃(更贴切的说法是“排除”)不必要的搜查范围,这样有利于我们去快速查找。​ 这种二分思想,我们也可应用到其他方面:比如开平方数之类——不停的从目标区间的......
  • git ssh链接远程仓库
    一、参考博客——创建ssh链接——解决端口链接超时二、创建ssh链接2.1安装git链接:https://pan.baidu.com/s/19bjRZz_uhXW8HuVVNiLz4A?pwd=bxe0提取码:bxe0选择下载的地址,一路next,当然默认编辑器啥的配置,自己有需要就点击,但是最后一项带有new的next不建议勾选。——下载......