中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell查找命令find和grep如何使用

發布時間:2023-03-23 13:46:06 來源:億速云 閱讀:149 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Shell查找命令find和grep如何使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Shell查找命令find和grep如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

第一節 文件查找之find命令

語法格式:find [路徑] [選項] [操作]

Shell查找命令find和grep如何使用

常用選項

# - name 查找/etc目錄下以conf結尾的文件 區分大小寫
find /etc -name '*conf'
# -iname 查找當前目錄下文件名為aa的文件,不區分大小寫 
find . -iname aa
# -user 查找文件屬主為hdfs的所有文件
find . -user hdfs
# -group 查找文件屬組為yarn的所有文件
find . -group yarn

# -type
# f 文件 find . -type f
# d 目錄 find . -type d
# c 字符設備文件 find . -type c
# b 塊設備文件 find . -type b
# l 鏈接文件 find . -type 1
# 管道文件 find . -type p

# -size
# -n 大小小于n的文件
# +n 大小大于n的文件
# n 大小等于n的文件
# 例子1:查找/etc目錄下小于1000字節的文件
find /etc -size -10000c
# 例子2:查找/etc目錄下大于1M的文件
find /etc -size +1M

# -mtime
# -n天以內修改的文件
# +n n天以外修改的文件
# n 正好n天修改的文件
# 例子1:查找/etc目錄下5天之內修改且以conf結尾的文件 
find /etc -mtime -5 -name '*.conf'
# 例子2:查找/etc目錄下10天之前修改且屬主為root的文件
find /etc -mtime +10 -user root 

# -mmin 
# -n n分鐘以內修改的文件
# +n n分鐘以外修改的文件
# 例子1:查找/etc目錄下30分鐘之前修改的文件
find /etc -mmin +30
# 例子2:查找/etc目錄下30分鐘之內修改的目錄
find /etc -mnin -30 -type d

# -mindepth n 表示從n級子目錄開始搜索
# 例子:在/etc下的3級子目錄開始搜索
find /etc -mindepth 3

# -maxdepth n 表示最多搜索到n-1級子目錄
# 例子1:在/etc下搜索符合條件的文件,但最多搜索到2級子目錄
find /etc -maxdepth 3 -name '*.conf'
# 例子2:
find ./etc/ -type f -name '*.conf' -size +10k -maxdepth 2

了解選項

# -nouser 查找沒有屬主的用戶
find . -type f -nouser
# -nogroup 查找沒有屬組的用戶
find . -type f -nogroup
# -perm 根據權限查找
find . -perm 664
# -prune 通常和-path一起使用,用于將特定目錄排除在搜索條件之外
# 例子1:查找當前目錄下所有普通文件,但排除etc目錄
find . -path ./etc -prune -o -type f
# 例子2:查找當前目錄下所有普通文件,但排除etc和opt目錄
find . -path ./etc -prune -o -path ./opt -prune -o -type f
# 例子3:查找當前目錄下所有普通文件,但排除etc和opt目錄,但屬主為hdfs
find . -path ./etc -prune -o -path ./opt -prune -o type f -a -user hdfs
# 例子4:查找當前目錄下所有普通文件,但排除etc和opt目錄,但屬主為hdfs,且文件大小必須大于500字
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs -a -size +500c

# -newer file1 比file1新的文件
find /etc -newer a

對查找到的文件操作

# -print 打印輸出

# -exec 對搜索到的文件執行特定的操作,格式為-exec 'command'{} \; 
# {} 表示前面搜索到的結果 固定寫法{} \
# 例子1:搜索/etc下的文件(非目錄),文件名以conf結尾且大于10k,然后將其刪除
find ./etc/ -type f -name '*.conf' -size +10k -exec rm -f {} \;
# 例子2:將/var/1og/目錄下以1og結尾的文件,且更改時間在7天以上的刪除
find /var/log/ -name '*.1og' -mtime +7 -exec rm -rf {} \;
# 例子3:搜索條件和例子1一樣,只是不刪除,而是將其復制到/root/conf目錄下
find ./etc/ -size +10k -type f -name '*.conf' -exec cp {} /root/conf/ \;

# -ok 和exec功能一樣,只是每次操作都會給用戶提示
# 邏輯運算符:
# -a 與
# -o 或
# -not|! 非
# 例子1:查找當前目錄下,屬主不是hdfs的所有文件
find . -not -user hdfs | find .! -user hdfs
# 例子2:查找當前目錄下,屬主屬于hdfs,且大小大于300字節的文件
find . -type f -a -user hdfs -a -size +300c
# 例子3:查找當前目錄下的屬主為hdfs或者以xm1結尾的普通文件
find . -type f -a \( -user hdfs -o -name '*.xml')

第二節 find、locate、whereis和which總結

locate命令介紹:

  • 文件查找命令,所屬軟件包mlocate

  • 不同于find命令是在整塊磁盤中搜索,locate命令在數據庫文件中查找

  • find就會很影響IO性能,locate會歸檔到數據庫中,文件查找就會很快。

  • find是默認全部匹配,locate則是默認部分匹配

通過updatedb命令及時更新locate命令的數據庫,做到及時查到,否則就要等到它自動歸檔到數據庫中。

yum -y install mlocate
# 用戶更新/var/lib/mlocate/mlocate.db
# 所使用配置文件/etc/updatedb.conf
# 該命令在后臺cron計劃任務中定期執行
updatedb # 會遍歷整個文件系統 會比較慢
locate my.cnf

whereis

  • -b 只返回二進制文件

  • -m 只返回幫助文檔文件

  • -s 只返回源代碼文件

whereis mysql
whereis -b mysql
whereis -m mysql

which 作用∶僅查找二進制程序文件

-b 只返回二進制文件

which mysql

Shell查找命令find和grep如何使用

第三節 grep和egrep

第一種形式: grep [option] [pattern] [file1,file2...]

第二種形式:command \ grep [option] [pattern]

Shell查找命令find和grep如何使用

# 必須掌握的選項:
# -v 最示不匹配pattern的行 排除包含字符的內容
# -i 搜索時忽略大小寫
# -n 顯示行號
# -E 支持擴展的正則表達式
# -F 不支持正則表達式,按字符串的字面意思進行匹配
# -r 遞歸搜索

# file
i love python
.lovelove 
python lovelove
LOVE PYTHON
Love pYtHoN

grep python file # file文件包含python的行
grep -v python file # file文件不包括python的文件
grep -iv python file # file文件不包括python的文件 忽略大小寫
grep -n python file # file文件包含python的行 并顯示行號

# 下面的|就是拓展正則表達式
grep "python | PYTHON" file 
grep -E "python | PYTHON" file 

# -F 不支持正則表達式,按字符串的字面意思進行匹配
grep "py.*" file
grep -F "py.*" file

# 需了解的選項:
# -c 只輸出匹配行的數量,不顯示具體內容
# -w 匹配整詞
# -x 匹配整行
# -l 只列出匹配的文件名,不顯示具體匹配行內容
grep -c python file
grep -w love file
grep -x "i love python" file

grep和egrep:

  • grep默認不支持擴展正則表達式,只支持基礎正則表達式使用

  • grep -E可以支持擴展正則表達式

  • 使用egrep可以支持擴展正則表達式,與grep -E等價

讀到這里,這篇“Shell查找命令find和grep如何使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲麻莱县| 蕲春县| 绩溪县| 洛扎县| 泾阳县| 松潘县| 星座| 南郑县| 斗六市| 洪江市| 吉林市| 沾益县| 施秉县| 酒泉市| 盐城市| 田阳县| 彭州市| 乌拉特中旗| 溧水县| 庆云县| 沈丘县| 安仁县| 北海市| 平果县| 惠州市| 吉安县| 通化市| 大庆市| 阿坝| 甘德县| 惠东县| 怀柔区| 松潘县| 古丈县| 滁州市| 平山县| 安远县| 永安市| 清涧县| 安达市| 武夷山市|