日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3-4:常见任务和主要工具之文件搜索

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3-4:常见任务和主要工具之文件搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一:locate-最簡單的查找文件的方式
  • 二:find-搜索神器
    • (1)test選項
      • A:基本使用
      • B:操作符
    • (2)action選項
      • A:預定義動作
      • B:用戶自定義操作
      • C:xargs
    • (3)option選項

前言

我們知道Linux操作系統的文件組織結構管理的非常好,但是隨之而來的一個很大的問題就是——文件太多了,一多就容易出亂子。而多最大的帶給我們最大的困擾就是如何找到我們想要的文件? 所以本章的主要內容,就是如何搜索文件

本章的主要命令如下

  • locate:通過文件名查找文件
  • find:查找文件(配合參數功能極其強大)
  • xargs:從標準輸入中簡歷,執行命令行
  • touch:更改文件的日期時間(經常用來創建文件)
  • stat:顯示文件或文件系統的狀態

一:locate-最簡單的查找文件的方式

locate命令可以通過快速搜索數據庫,以尋找路徑名與給定字符串匹配的文件,同時輸出所有的匹配結果

比如要查找以zip字符串開頭的程序

loacte當然可以和其他命令結合使用,比如說grep。如下全盤搜索zip,但是只是bin/目錄下的就可以這樣做

  • 需要注意的是使用locate命令查找到的內容可能不是最新的,如果需要最新的,需要切換為超級用戶,然后手動運行updatedb程序,再查找

二:find-搜索神器

find命令可以說是Linux非常值得我們反復推敲的一個命令了,因為它真的太TM強大了

find最簡單的用法就是,在find后面跟上路徑名,它就會列出或者說搜索出給定路徑下的所有文件

(1)test選項

A:基本使用

簡單點說就是,find可以根據屬性進行搜索
比如說我要搜索用戶目錄下所有的普通文件,就輸入find ~ -type f

  • find支持的文件類型如下

比如說我要搜索用戶目錄下所有的超過1M的普通文件,就輸入find ~ -type f -size +1M

  • 如果有“+”表示大于目標值,如果是“-”表示小于目標值,如果沒有則表示等于目標值

比如說我要搜索用戶目下的所有圖片文件(以.jpg結尾),就輸入find ~ -name "*.jpg"

當然除了以上依據名字,大小查詢,find支持以下參數(部分)進行查詢,需要注意的是上面的“+”和“-”使用于任何的數值情況

B:操作符

簡單點說,操作符可以使我們的參數有邏輯關系
舉個例子,下面的文件夾里有三個普通文件和三個目錄,其中test1這個普通文件的權限是600,其余不是;dir1這個目錄的權限是700,其余不是
我的要求就是找到所有權限不是600的普通文件和所有權限不是700的目錄,該怎么辦?這個時候就要用到操作符了。

大家可以發現上述查詢有一定的邏輯關系,而操作符就是用來描述這種邏輯關系的,我先把查找命令寫出來,大家不要覺得驚奇,聽我慢慢分析
find . \( -type f -not perm 0600 \) -or \( -type d -not -perm 0700 \)

首先我得解釋一下上面出現的-or,-not,其實它就是C語言的&& || !

結合上述表,你可以把上面的命令簡化為(expression1) -or (expression2)

  • 這里是稍微暫停一下,很多人會覺得上面的兩個表達式的關系應該and才對,但是大家要想一下這樣查詢的含義豈不是要查既是普通文件又是目錄的文件嗎?這樣的關系顯然錯誤

接著每個表達式內,我們用的是-not,是因為我們要查找的文件的權限不是0600,目錄不是0700,也就是可以寫作-type f -and -not -perms 0600和-type d -and -not -perms 0700

最后一點是括號前面的反斜杠,那是因為括號在shell具有特殊含義,必須使用轉義字符

最后還有一點要給大家說清楚,其實這一點和C語言有關,因為在C語言中我們稱之為邏輯運算符的短路特性
在任何情況下,表達式1都會被執行,而中間的操作符直接決定了表達式2是否會執行

  • 這一點額外額外重要,這個性質直接影響了actions參數

(2)action選項

find強大的原因不止在于它可以查找,而且在于它可查找后進行操作

A:預定義動作


比如要刪除當前目錄下,所有以test開頭的文件

還記得上面的短路特性嗎?需要注意的是每個test選項和action選項之間的邏輯關系默認是and,也就是上圖中的命令實際可以寫作:find . -name " test*" -and -print -and -delete。

B:用戶自定義操作

這個略過,感覺這個課本上的這個操作有點雞肋,可以用下面的xargs

C:xargs

xargs處理標準輸入信息并將其轉變為某指定命令的輸入參數列表 ,簡單點說就是xargs后面的命令會執行前面的輸出結果

如下有5個test文件,找出來之后列出信息

(3)option選項

option選項用于控制find的搜索范圍

總結

以上是生活随笔為你收集整理的3-4:常见任务和主要工具之文件搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。