Linux 查找命令的操作,學完效率瞬間翻倍?

可以很肯定地說,find 命令是 Linux 運維必須熟知的操作之一。

讓我們看一道題:

如果你的 Linux 服務器上有一個名為 .logs 的目錄,如何刪除該目錄下最后一次訪問時間超過一年的日志文件呢?

這種情況很常見,但令人驚訝的是,并非每個開發人員都能在面試中清楚地寫出這個命令。

答案:首先我們需要使用 cd 命令進入對應的目錄,然后,命令如下:

find . -type f -atime +365 -exec rm -rf {} \;

如果你還沒有完全理解上面的命令,完全不用擔心。本文將介紹find命令的 8 個實際用途,您最終會掌握它。如果您已經知道了,那么閱讀這篇文章對您來說將是一個很好的回顧。

1、按名稱或正則表達式查找文件

讓我們從最簡單的用法開始。要按特定名稱搜索文件,命令如下:

find . -name test.txt

如何查找所有格式為 pdf 的書籍?使用正則表達式:

find ./yang/books -name "*.pdf"

默認情況下,find 命令會搜索常規文件,但最好進行指定(-type f)以使所有內容更清晰:

find ./yang/books -type f -name "*.pdf"

2、查找不同類型的文件

除了搜索常規文件外,我們還可以通過指定-type選項來搜索其他類型的文件。

例如目錄:

find . -type d -name "yang*"

或者符號鏈接:

find . -type l -name "yang*"

3、按指定的時間戳查找文件

要按指定的時間戳搜索文件,我們需要知道 Linux 系統中的 3 個不同的時間戳:

  • 訪問時間戳(atime):最后一次讀取文件的時間。

  • 修改時間戳 (mtime):文件內容最后一次被修改的時間。

  • 更改時間戳 (ctime):上次更改文件元數據的時間(如,所有權、位置、文件類型和權限設置)

圖片

所以,正如開頭提到的面試題,要搜索atime超過一年的文件,我們可以編寫如下命令:

find . -type f -atime +365

如果我們需要查找 mtime 正好是 5 天前的文件,請不要包含 +,因為它的意思是“大于”。

find . -type f -mtime 5

顯然,+ 表示“大于”,- 表示“小于”。所以我們可以搜索 ctime 在 5~10 天前的文件:

find . -type f -ctime +5 -ctime -10

4、按大小查找文件

-size選項使我們能夠按指定大小查找文件。我們可以將其計量單位指定為以下約定:

  • b:512 字節塊(默認)

  • c:字節

  • w:雙字節字

  • k:KB

  • M:MB

  • G:GB

類似于按時間戳查找文件,+表示“大于”,-表示“小于”。例如,要查找大小為 10 MB ~ 1 GB 的文件:

find . -type f -size +10M -size -1G

5、按權限查找文件

合理控制文件的權限是 Linux 管理員的一項重要任務。find命令的-perm選項可以幫助我們按指定權限查找文件:

find . -type f -perm 777

例如,上面的命令會搜索所有具有 777 權限的文件,這意味著一個文件對其持有者、組和所有用戶具有所有的讀、寫和可執行權限。

6、按所有權查找文件

這個任務很簡單。我們可以使用 -user 選項指定用戶名。例如,以下命令將查找所有屬于 yang 的文件:

find -type f -user yang

7、在找到文件后執行命令

在大多數情況下,我們希望在找到我們需要的文件后進行后續操作。例如將其刪除,或檢查它們的詳細信息等等。-exec命令使這些所有事情變得更加容易。

現在,要了解如何使用它,讓我們回到之前提到的面試問題:

find . -type f -atime +365 -exec rm -rf {} \;

上述命令在-exec選項后是rm -rf,其用于刪除文件。{}是用于查找結果的占位符。

注意:占位符{}非常重要,尤其是在您想刪除文件時。因為,如果您不使用它,該命令將對所有文件執行(而不是您剛剛通過 find 命令找到的文件)。

做一個嘗試,請在終端上執行以下兩個命令,并檢查它們的結果有何不同:

一個使用占位符:

find . -type f -atime +5 -exec ls {} \;

另一個不使用:

find . -type f -atime +5 -exec ls \;

-exec 選項后面的命令必須以分號(;)結束。眾所周知,轉義字符用于去除單個字符的特殊含義。在 Linux 中,反斜杠\用作轉義字符。所以我們將它用于分號字符。

8、按照目錄名稱搜索

除了上述查找目錄用法,find 按目錄名稱搜索也有很多奇技淫巧:?

find /path/to/search -type d -name "directory_name"

比如:大小寫不敏感:

find /path/to/search -type d -iname "directory_name"

可以使用 -iname 選項,可以忽略目錄名稱的大小寫進行搜索。

還可以通過組合選項,查找最近修改的目錄:

可以使用?-type d 選項來限制 find 命令只搜索目錄,并結合?-printf 選項打印出目錄的最后修改時間,然后使用 sort 命令按照時間排序。

find /path/to/search -type d -printf '%T+ %p\n' | sort -n | tail -1

總結

Linux?中除了 Find,還有比如 grep、locate、which、fd 等命令,還有哪些精彩用法,歡迎留言哦~

看完上面的 8 種用法后,開始提到的面試題現在好像很容易解決了。你現在可以直接寫下它的答案并將其解釋清楚嗎?

find . -type f -atime +365 -exec rm -rf {} \;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17676.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17676.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17676.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡述nextTick 的作用是什么?他的實現原理是什么 ?

nextTick 的作用 在 Vue.js 中,nextTick 是一個非常有用的函數,它用于延遲執行一段代碼,直到下一次 DOM 更新循環結束之后。換句話說,當你修改了數據之后,視圖不會立即更新,而是等到下一次“DOM 更新循環”…

【Linux系統】進程間通信

本篇博客整理了進程間通信的方式管道、 system V IPC的原理,結合大量的系統調用接口,和代碼示例,旨在讓讀者透過進程間通信去體會操作系統的設計思想和管理手段。 目錄 一、進程間通信 二、管道 1.匿名管道 1.1-通信原理 1.2-系統調用 …

簡談SUID提權

SUID提權 0x01什么是SUID ? SUID (Set UID)是Linux中的一種特殊權限,其功能為用戶運行某個程序時,如果該程序有SUID權限,那么程序運行為進程時,進程的屬主不是發起者,而是程序文件所屬的屬主。但是SUID權限的設置只針對二進制可…

強化學習4:DQN 算法

看這篇文章之前,建議先了解一下:Q-Learning 算法。 1. 算法介紹 DQN 算法全稱為 Deep Q-Network,即深度Q網絡。它將 Q-Learning 與 Deep Learning 結合在了一起。 1.1 Q-Network Q-Learning 是使用 Q-table 才存儲決策信息的,…

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓 https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encfhttps://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf AI推文神器是一種基于人工智能技術的工具,旨在幫助用戶快速生成優質的推文。它通過分…

iPhone“已刪除”照片被恢復,蘋果到底有沒有后門?

繼微軟本周推出的Windows“回憶”功能引發隱私焦慮,遭馬斯克和安全大咖們猛烈抨擊后,蘋果iPhone手機近日也曝出了類似的“記憶門”。 刪除十幾年的iPhone照片被恢復 近日,有蘋果手機用戶更新了蘋果上周發布的iOS 17.5系統后,意外…

妙解設計模式之策略模式

目錄 策略模式的概念生活中的例子編程中的例子 軟件工程中的實際應用數據排序文件壓縮支付方式圖形繪制 策略模式的概念 策略模式(Strategy Pattern)是一種行為型設計模式,它定義了一系列算法,把它們一個個封裝起來,并…

Android Graphics模塊中的各種State和重要類普法

Android Graphics模塊中的各種State和重要類普法 引言 尼瑪,這Android Graphics圖形棧蛋疼啊,更新太快了。機會是每年一個版本,前進的膠布不能停啊,繼續干。這邊博客,我們的核心是理一理Android Graphics中各種State狀…

2024最新版本激活Typora,1.8.10.0版本可用

?實測可用日期為:2024-05-28 目前最新版本 1.8.10.0 也是可以實現激活的 注:免修改注冊表、不用修改時間,更不需要破解補丁 01、下載&安裝 Typora 文件 從官網下載最新版本的 Typora,并安裝 或者阿里云盤: htt…

Pytorch深度學習實踐筆記12(b站劉二大人)

🎬個人簡介:一個全棧工程師的升級之路! 📋個人專欄:pytorch深度學習 🎀CSDN主頁 發狂的小花 🌄人生秘訣:學習的本質就是極致重復! 《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibi…

數據集008:吸煙、抽煙檢測數據集(含數據集下載鏈接)

數據集簡介 兩個數據集 一個是783張圖片對應的xml文件 一個是2482張圖片對應的xml文件 如下圖所示: 部分代碼: # 測試數據讀取 def test_data_loader(datadir, batch_size 10, test_image_size608, modetest):"""加載測試用的圖片…

大學生選擇算法向還是嵌入式向?

在開始前剛好我有一些資料,是我根據網友給的問題精心整理了一份「嵌入式的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!! 由于嵌入式的薪資待遇和…

品牌建設不迷路:系統化方法讓品牌成長更高效

很多創始人才創業過程中都會發現: 企業越大,遇到的系統性的底層品牌問題就會越多,品牌的系統化建設底層根基如果不穩,后續的增長也會搖搖欲墜。 所以在當今競爭激烈的市場環境中,品牌的成功不僅僅依靠一個響亮的名字…

Spring Boot注解(Annotation)

在Spring Boot中,注解(Annotation)是一種元數據形式,它可以在代碼中提供信息,這些信息可以在運行時或編譯時被處理。Spring Boot使用注解來實現依賴注入、事務管理、配置等功能。 以下是Spring Boot中注解的執行機制的…

【Linux】Linux的權限_1

文章目錄 三、權限1. shell外殼2. Linux的用戶3. Linux權限管理文件訪問者的分類文件類型和訪問權限 未完待續 三、權限 1. shell外殼 為什么要使用shell外殼 由于用戶不擅長直接與操作系統直接接觸和操作系統的易用程度、安全性考慮,用戶不能直接訪問操作系統。 什…

文件IO(一)

文件IO(一) 文件IO文件的分類在文件IO下,文件分類按存儲的內容分按照操作分 標準IO和文件IO的區別系統調用和庫函數的區別 文件IO 把程序暫存在內存的數據,存儲到本地外存上 文件的分類 在Linux系統下,文件共分為7類…

AI答題項目,無門檻答題一小時收益30+

朋友們,今天我想和大家探討一個令人興奮的副業機遇。你是否曾感覺到日常工作的枯燥乏味,而又渴望找到一種輕松的賺錢方式來增加你的收入?今天我將和你分享的這個項目正是你所期待的。 項目的核心是利用AI技術來回答網上付費用戶的問題&…

重生之我要精通JAVA--第六周筆記

File 路徑 相對路徑 路徑1:“a.txt” 路徑2:“abc\\a.txt” 絕對路徑 路徑1:“c:\\a.txt” 路徑2:“c:\\abc\\a.txt” File對象就表示一個路徑,可以是文件的路徑、也可以是文件夾的路徑這個路徑可以是存在的&…

linux線程,線程控制與線程相關概念

線程概念 線程這個詞或多或少大家都聽過,今天我們正式的來談一下線程; 在我一開始的概念中線程就是進程的一部分,一個進程中有很多個線程,這個想法基本是正確的,但細節部分呢我們需要細細講解一下; 什么…

“揭秘:為什么羊駝Ollama成為計算機運行大型語言模型的最佳拍檔?“

最近,AIM 評測了在計算機上本地運行大語言模型(LLM)的最佳工具,Ollama 脫穎而出,成為最高效的解決方案,提供了無與倫比的靈活性。Ollama 是 Jeffrey Morgan 開發的一款開源工具,它正在徹底改變愛…