吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux文件查找

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-12-03 17:09 ? 次閱讀

Linux文件查找

1.find查找概述

為什么要有文件查找,因為很多時候我們可能會忘了某個文件所在的位置,此時就需要通過find來查找。

find命令可以根據不同的條件來進行查找文件,例如:文件名稱、文件大小、文件修改時間、屬主屬組、權限、等等方式。同時find命令是Linux下必須掌握的。

*find 命令的基本語法如下*

命令 路徑 選項 表達式 動作
find [path…] [options] [expression] [action]
查找 地區 妹紙 18-25歲 約?

是linux里面的一個實時查找工具,通過制定路徑完成文件查找

find [options] ..... [查找路徑] [查找條件] [處理動作]

查找路徑:查找的位置,默認是當前文件夾

查找條件:制定查找的標準,文件名、大小、類型、日期等等

處理動作:對符合條件的文件做什么操作,默認是輸出到屏幕上

2.find查找示例

*以下列出所有find常用的選項*

1.find名稱查找


#1.創建文件
touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1}


#2.查找/etc目錄下包含ifcfg-eth0名稱的文件
[root@lqz ~]# find /etc -name "ifcfg-eth1"


#3.-i 忽略大小寫
[root@lqz ~]# find /etc -iname "ifcfg-eth1"
#查找/etc目錄下包含ifcfg-eth名稱所有文件
[root@lqz ~]# find /etc/ -name "ifcfg-eth*"
[root@lqz ~]# find /etc -iname "ifcfg-eth*"

2.find大小查找


#1.查找大于5M的文件
[root@lqz ~]# find /etc -size +5M


#2.查找等于5M的文件
[root@lqz ~]# find /etc -size 5M


#3.查找小于5M的文件
[root@lqz ~]# find /etc -size -5M

3.find類型查找


# f 文件
[root@lqz ~]# find /dev -type f
# d 目錄
[root@lqz ~]# find /dev -type d
# l 鏈接
[root@lqz ~]# find /dev -type l
# b 塊設備
[root@lqz ~]# find /dev -type b
# c 字符設備
[root@lqz ~]# find /dev -type c
# s 套接字
[root@lqz ~]# find /dev -type s
# p 管道文件
[root@lqz ~]# find /dev -type p

4.find時間查找


#1.創建測試文件(后期shell會講)
[root@lqz ~]# for i in {01..28};do date -s  201904$i && touch file-$i;done


#2.查找7天以前的文件(不會打印當天的文件)
[root@lqz ~]# find ./ -iname "file-*" -mtime +7


#3.查找最近7天的文件,不建議使用(會打印當天的文件)
[root@lqz ~]# find ./ -iname "file-*" -mtime -7


#4.查找第7天文件(不會打印當天的文件)
[root@lqz ~]# find ./ -iname "file-*" -mtime 7


#5.本地文件保留最近7天的備份文件, 備份服務器保留3個月的備份文件(實際使用方案)
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

5.find用戶查找


#查找屬主是jack
[root@lqz ~]# find /home -user jack
#查找屬組是admin
[root@lqz ~]# find /home -group admin
#查找屬主是jack, 屬組是admin
[root@lqz ~]# find /home -user jack -group admin
#查找屬主是jack, 并且屬組是admin
[root@lqz ~]# find /home -user jack -a -group admin
#查找屬主是jack, 或者屬組是admin
[root@lqz ~]# find /home -user jack -o -group admin
#查找沒有屬主
[root@lqz ~]# find /home -nouser
#查找沒有屬組
[root@lqz ~]# find /home -nogroup
#查找沒有屬主或屬組
[root@lqz ~]# find /home -nouser -o -nogroup

6.find權限查找


#精切匹配644權限
[root@lqz ~]# find . -perm 644 -ls


#包含444權限即可
[root@lqz ~]# find . -perm -444  -ls
#查找全局可寫(每位權限必須包含w)
[root@lqz ~]# find . -perm -222 -ls
#包含set uid
[root@lqz ~]# find  /usr/sbin -perm -4000 -ls
#包含set gid
[root@lqz ~]# find  /usr/sbin -perm -2000 -ls
#包含sticky
[root@lqz ~]# find  /usr/sbin -perm -1000 -ls

查找條件

根據文件名查找

-name 指定名稱,可以使用正則

-iname 忽略大小寫

-links n 引用次數為n的文件

-regex 后面跟完整路徑,而不是文件名, 必須整個路徑完全匹配

制定搜索的層級

-maxdepth level 最大的搜索深度,指定的目錄為第1層

-mindepth level 最小的搜索深度,包括level層

根據屬主、屬組來查找

-user username 查找屬主為username的文件

-group groupname 查找屬組為groupname的文件

-uid id 查找屬主為id的文件

-gid id 查找屬組為id的文件

-nouser 查找沒有屬主的文件

-nogroup 查找沒有屬組的文件

m[root@192 test]#chown qiao b
m[root@192 test]#ll
total 0
drwxr-xr-x. 4 root root 24 Dec  4 22:50 a
-rw-r--r--. 1 qiao root  0 Dec  6 17:53 b
m[root@192 test]#chown :llx b
m[root@192 test]#ll
total 0
drwxr-xr-x. 4 root root 24 Dec  4 22:50 a
-rw-r--r--. 1 qiao llx   0 Dec  6 17:53 b
m[root@192 test]#find -group llx
./b
m[root@192 test]#id root
uid=0(root) gid=0(root) groups=0(root)
m[root@192 test]#id qiao
uid=1000(qiao) gid=1000(qiao) groups=1000(qiao)
m[root@192 test]#find -uid 1000
./b


m[root@192 test]#useradd xiaobao
m[root@192 test]#chown xiaobao b
m[root@192 test]#ll
total 0
drwxr-xr-x. 4 root    root 24 Dec  4 22:50 a
-rw-r--r--. 1 xiaobao llx   0 Dec  6 17:53 b
m[root@192 test]#userdel xiaobao
m[root@192 test]#ll
total 0
drwxr-xr-x. 4 root root 24 Dec  4 22:50 a
-rw-r--r--. 1 1002 llx   0 Dec  6 17:53 b
m[root@192 test]#find -nouser
./b


# 全盤找
m[root@192 test]#find / -nouser

根據文件類型 -type

d 目錄

f 文件

l 符號鏈接

s 套接字

b 塊設備

c 字符設備

p 管道文件

m[root@192 test]#find -type f
./b

空文件或者空目錄

-empty

m[root@192 test]#find -empty

條件

與 -a

或 -o

非 -not

m[root@192 test]#find -empty -o -type d
m[root@192 test]#find -empty -not -type d
./b

摩根定律

非(A或者B) 非A 且非B

非(A且B)非A或非B

m[root@192 ~]#find !(-empty -a -tpye d)

排除目錄

-path

[root@localhost test]#find /etc -name *_config
/etc/ssh/ssh_config
/etc/ssh/sshd_config
[root@localhost test]#find /etc -path /etc/ssh -name *_config

按照大小來查找

-size # (#-1,#] 不包括#-1,包括#

-size -# [0,#-1] 包括#-1

-size +# (#,......)

按照時間來查找

-amin

-mmin

-cmin

-atime # [#,#+1)

-atime -# (0,#)

-atime +# [#+1,....]

查找7天以后的文件 find -atime +7

-mtime

-ctime

以分鐘為單位

3 處理動作

find動作處理,比如查找到一個文件后,需要對文件進行如何處理, find的默認動作是 -print

1.find查找后的動作命令示例

動作 含義
-print 打印查找到的內容(默認)
-ls 以長格式顯示的方式打印查找到的內容
-delete 刪除查找到的文件(僅能刪除空目錄)
-ok 后面跟自定義 shell 命令(會提示是否操作)
-exec 后面跟自定義 shell 命令(標準寫法 -exec

- -print 默認的處理動作,顯示在屏幕上
- -ls 類似于ls -l 顯示長格式
- -delete 刪除查找到的文件
- -fls file 將查找的結果以長格式保存到文件中
- -ok command {} ; 對每一個查找到的文件執行command命令,在執行命令之前要先提示用戶是否要執行

find -size 2M -ok rm -rf {} ;
找到2M的文件,刪除,提示刪除

-exec command {} ; 對查到的每一個文件執行command命令,不需要確認,一次性交給后面命令處理

find -size 2M -exec rm -rf {} ;
m[root@192 test]#find -size 2M -delete


#1.使用-print打印查找到的文件
[root@lqz ~]# find /etc -name "ifcfg*"
[root@lqz ~]# find /etc -name "ifcfg*" -print


#2.使用-ls打印查找到的文件,以長格式顯示
[root@lqz ~]# find /etc -name "ifcfg*" -ls


#3.使用-delete刪除文件,但僅能刪除空目錄
[root@lqz ~]# find /etc -name "ifcfg*" -delete


#4.使用-ok實現文件拷貝,但會提示是否拷貝
[root@lqz ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp ;


#5.使用-exec實現文件拷貝和文件刪除。
[root@lqz ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp ;
[root@lqz ~]# find /etc -name "ifcfg*" -exec rm -f {} ;

2.使用find命令結合xargs

有的命令不支持管道

命令參數過長

xargs 將管道前面的內容一條一條的交給后面命令處理

echo file{1..50000}|xargs touch

一般會跟find使用


#xargs將前者命令查找到的文件作為一個整體傳遞后者命令的輸入
[root@lqz ~]# touch file.txt
[root@lqz ~]# find . -name "file.txt" |xargs rm -f
[root@lqz ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp

3.find邏輯運算符

符號 作用
-a
-o
-not|!


#1.查找當前目錄下,屬主不是hdfs的所有文件
[root@lqz ~]# find . -not -user hdfs 
[root@lqz ~]# find . ! -user hdfs
        
#2.查找當前目錄下,屬主屬于hdfs,且大小大于300字節的文件
[root@lqz ~]# find . -type f -a -user hdfs -a -size +300c
            
#3.查找當前目錄下的屬主為hdfs或者以xml結尾的普通文件
[root@lqz ~]# find . -type f -a ( -user hdfs -o -name '*.xml' )

4.find相關練習題

1.查找/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
2.查找/var目錄下屬主為root,且屬組為mail的所有文件
3.查找/var目錄下不屬于root、lp、gdm的所有文件
4.查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件
5.查找/etc目錄下大于1M且類型為普通文件的所有文件
6.將/etc/中的所有目錄(僅目錄)復制到/tmp下,目錄結構不變
7.將/etc目錄復制到/var/tmp/,/var/tmp/etc的所有目錄權限777/var/tmp/etc目錄中所有文件權限666
8.保留/var/log/下最近7天的日志文件,其他全部刪除
9.創建touch file{1..10}10個文件, 保留file9,其他一次全部刪除
10.解釋如下每條命令含義
mkdir /root/dir1
touch /root/dir1/file{1..10}
find /root/dir1 -type f -name "file5"
find /root/dir1 ! -name "file5"
find /root/dir1 -name "file5" -o -name "file9"
find /root/dir1 -name "file5" -o -name "file9" -ls
find /root/dir1 ( -name "file5" -o -name "file9" ) -ls
find /root/dir1 ( -name "file5" -o -name "file9" ) -exec rm -rvf {} ;
find /root/dir1  ! ( -name "file4" -o -name "file8" ) -exec rm -vf {}  ;

linux三劍客

三劍客詳解

grep

awk

sed

grep

grep [option] "模式" file

option

--color=auto 對匹配到的行添加顏色
-v 取反
-i 不區分大小寫
-n 查找的內容增加行號
-c 打印匹配到的行數
-o 只顯示匹配到的文字
-q 靜默模式
-A # after 向下顯示#行
-B # before 向上顯示#行
—C # context 上下分別顯示#行
-e 或者 grep -e 'user' -e 'root' passwd 或的意思
-E 擴展正則表達式
-F 不使用正則表達式
-r 遞歸
-w 匹配整個單詞

正則表達式元字符

字符匹配

. 任意單個字符

[] 匹配指定范圍內的任意單個字符 [0-9] [a-z] [A-Z]

[^] 取反

[] 大寫字母

[] 小寫字母

[] 字母和數字

[] 大小寫字母

[] 數字

m[root@192 test]#grep '[[]]+' c
# 匹配數字




[:black:] 空白
[:punct:] 標點符號
匹配次數
* 表示任意次數
.* 任意字符任意次數
? 表示0或者1次
+ 至少一次
{n} 表示n次 轉義字符
{m,n} 最少m次,最多n次
{n,} 至少n次
{,n} 至多n次
位置錨定
^ 開頭
$結尾
^$ 空行
grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 顯示不以#開頭并且不是空行

分組

grep "(c|C)at" a

向后引用

1 前面第一個括號出現的內容匹配完成之后再后面在出現一次

2 前面第二個括號出現的內容匹配完成之后再后面在出現一次

grep "(l..e).*1" c
love djfdjfd;d love

擴展正則表達式

與正則表達式的區別是不需要轉義

grep -E "(c|C)at" a
不需要加進行轉義

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210385
  • Find
    +關注

    關注

    0

    文章

    54

    瀏覽量

    11667

原文標題:正則表達式元字符

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 Day3-03_Linux入門系列視頻-Linux文件查找命令find語法結構1

    Linux開發
    Mr_haohao
    發布于 :2022年09月02日 19:03:53

    linux中怎么用find查找文件

    find命令用來在指定目錄下查找文件的命令,和locate不同,find命令是實時精確查找,不做模糊匹配,但是可以使用通配符查找,相對更精確。任何位于參數之前的字符串都將被視為欲查找
    發表于 11-26 13:52

    Linux文件查找命令find,xargs詳述

    Linux文件查找命令find,xargs詳述 前言:關于find命令 由于find具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一下。即使系統中含有網絡文件
    發表于 11-07 11:17 ?0次下載

    Linux文件管理命令語法、參數、實例全匯總

    Linux find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與
    的頭像 發表于 03-14 17:48 ?4169次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>管理命令語法、參數、實例全匯總

    Linux中的35個find命令用法

    Linux查找命令是Linux系統中最重要和最常用的命令之一。查找用于根據與參數匹配的文件指定的條件來搜索和
    的頭像 發表于 02-02 16:53 ?3723次閱讀
    <b class='flag-5'>Linux</b>中的35個find命令用法

    虛擬機:Linux查找網卡所用的驅動

    虛擬機:Linux查找網卡所用的驅動
    的頭像 發表于 06-22 15:29 ?3587次閱讀
    虛擬機:<b class='flag-5'>Linux</b><b class='flag-5'>查找</b>網卡所用的驅動

    如何在Linux使用wc命令統計目錄文件

    盡管不是很經常需要知道,但有時您需要找出指定目錄中有多少個文件。例如,Linux系統inodes用完,則需要查找哪個目錄包含成千上萬個文件
    的頭像 發表于 12-09 16:48 ?1878次閱讀

    如何在Linux查找斷開的符號鏈接

    在之前的文章中,我們解釋了什么是 Linux 中的符號鏈接。符號鏈接(Symbolic links 或 symlinks)或軟鏈接(soft links)用于在 Linux 中創建指向其他文件
    的頭像 發表于 02-06 18:23 ?1680次閱讀

    Python如何快速查找文件

    但是既然用到了Python,就想到可不可以來自己實現一下,下面的分析是針對一個目錄來查找的,當你知道文件大致有什么東西的時候,比如你要查找 md 結尾的的文件,又大致知道在哪個目錄的時
    的頭像 發表于 03-03 15:39 ?1475次閱讀

    如何使用命令行在Linux查找文件

    對于Linux新用戶來說,在Linux查找文件可能有點困難。但是,在適當的指導下,任何人都可以創建文件快捷方式或找到其Linux系統中有多
    的頭像 發表于 03-23 14:55 ?4324次閱讀

    如何在Linux查找文件所有者?

    Linux 系統中,每個文件和目錄都有一個所有者(owner)和一個所屬組(group)。所有者通常是創建該文件或目錄的用戶,而所屬組通常是文件或目錄所屬的組。在某些情況下,您可能
    的頭像 發表于 05-12 14:31 ?1306次閱讀
    如何在<b class='flag-5'>Linux</b>中<b class='flag-5'>查找文件</b>所有者?

    linux查找文件的命令

    Linux中,可以使用以下命令來查找文件: find 命令:可以在指定目錄及其子目錄中查找文件,支持根據文件名、文件類型、
    的頭像 發表于 11-08 14:24 ?1376次閱讀

    Linux文件系統特點

    Linux文件系統特點 文件系統要有嚴格的組織形式,使得文件能夠以塊為單位進行存儲。 文件系統中也要有索引區,用來方便
    的頭像 發表于 11-09 14:48 ?1259次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>文件</b>系統特點

    Linux文件查找神器對決:Locate與find選誰

    linux 中有很多查找工具,今天主要講解locate,find兩個工具。 一、 locate 1、性能介紹 查詢系統上預建的文件索引 數據庫 /var/lib/mlocate/mlocate.db
    的頭像 發表于 12-18 14:00 ?221次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b><b class='flag-5'>查找</b>神器對決:Locate與find選誰
    蓝盾百家乐官网代理打| 网络百家乐官网输了很多钱| 大发888娱乐官网| 百家乐游戏机说明书| 澳门百家乐官网真人版| tt真人娱乐城| 太阳城代理最新网址| 百家乐游戏打水方法| 百家乐官网桌小| 彩票| 大发888游戏平台df888| 狮威百家乐娱乐网| 百家乐官网轮盘一体机厂家| 百家乐官网趋势图怎么看| 六合彩报码室| 疯狂百家乐游戏| 百家乐网上投注文章| 总统百家乐官网的玩法技巧和规则| 百家乐官网的连庄连闲| 波音代理| 金鼎百家乐局部算牌法| 百家乐官网手机壳| 百家乐官网投注信用最好的| 青海省| 大发888娱乐城888 bg| 模拟百家乐下载| 百家乐怎么赢9| 百家乐官网顶| 百家乐官网统计概率| bet365备用主页器| 试玩百家乐帐| 百家乐AG| 百家乐网络视频游戏| 百家乐官网怎么玩请指教| 网上百家乐官网的赌博网站| 林甸县| 柯坪县| 新葡京官网| bet365信誉好吗| 大发888线上官方网站| 威尼斯人娱乐城反水|