linuxfind刪除
A. linux常用命令詳解 | find
find 命令的基本結構如下:
find 命令手冊 : man find
find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持 wildcards 。如:
例1:查找 /usr 目錄下所有文件名以 .txt 結尾的文件
例2:查找 /usr 目錄下所有文件名剛好為 4 個字元的文件
例3:查以大寫字母開頭的文件
例4:查以兩個小寫字母和兩個數字開頭的txt文件
類似的還有:
-lname -ilname
-path -ipath
-regx -iregx
有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。
例1:如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
例2:在當前目錄除aa之外的子目錄內搜索 txt文件
例3:在當前目錄,不再子目錄中,查找txt文件
如果只想搜索得到文件 或 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。
-type 選項最常用的參數如下:
例:檢索 /usr 下所有文件名以 python 開頭的目錄
find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。
例:檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行 「反義」 (類似於 邏輯非 操作)。
如需要檢索 /usr 下所有文件名 不 以 .txt 為後綴的文件。可以使用以下命令:
也可以「翻轉」任何其他的篩選條件,如:檢索 /usr 下所有內容不為空的文件
為了檢索歸屬於特定用戶的文件或目錄,可以使用 -user 選項。
例:檢索根目錄下所有屬主為 starky 的文件
類似於 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。
有些時候,需要根據文件創建或修改的時間進行檢索。
Linux 系統中,與文件相關聯的時間參數有以下三種:
與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規則:
檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以 天 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項。
查找比 aa.txt 新 的文件
查找比 aa.txt 舊 的文件
查找比aa.txt新,比bb.txt舊的文件
-size 選項允許用戶通過文件大小進行搜索(只適用於文件,目錄沒有大小……)。
表示文件大小的單位由以下字元組成:
另外,還可以使用 + 或 - 符號表示 大於 或 小於 當前條件。
檢索文件大小高於 1 GB 的文件
find 命令可以使用 -perm 選項以文件許可權為依據進行搜索。
9.1使用符號形式
例1:如需要檢索 /usr 目錄下許可權為 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目錄下所有許可權為 r-xr-xr-x (即系統中的所有用戶都只有讀寫許可權)的文件和目錄,可以使用以下命令:
很多時候,我們只想匹配文件許可權的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行許可權,而不用管其讀寫許可權是什麼。
上述的需求可以通過以下命令實現:
其中 a=x 前面的 / 符號即用來表示只匹配許可權的某個子集(執行許可權),而不用關心其他許可權的具體設置。
9.2使用數字形式
例如:搜索 /usr 目錄下許可權為 644 (即 rwxr-xr-x )的文件
find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。
例如:搜索時向下遞歸的層數最大為 3
在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉 。
實際上 find 命令支持 「and」 和 「or」 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。
此外還可以使用 小括弧 對搜索條件進行 分組 。注意 find 命令中的小括弧常需要用 單引號 包裹起來。因小括弧在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
該命令等同於:
更復雜的組合形式如:
例4:在除dir0及子目錄以外的目錄下查找txt後綴文件
說明:-a 應該是and的縮寫,意思是邏輯運算符『與』(&&); -o應該是or的縮寫,意思是邏輯運算符『或』(||), -not 表示非.
命令行的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,『與』邏輯表達式為真(即-path './dir0*' -a -prune 為真),find命令將在除這個目錄以外的目錄下查找txt後綴文件並列印出來;如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,『與』邏輯表達式為假,則在當前目錄下查找所有txt後綴文件。
-delete 選項可以用來刪除搜索到的文件和目錄。
例如:刪除 home 目錄下所有的空目錄:
-exec 選項可以對搜索到的結果執行執行該參數所給出的shell命令。形式為 command {} ; ,注意{}與;之間有空格 。每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然後執行 -exec 後面的命令一次。
例1:如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
其中的 大括弧 ( {} )作為檢索到的文件的 佔位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來或前面加上轉義符 。
例2:查看當前目錄下的所有普通文件,並在 - exec 選項中使用 ls -l 命令將它們列出
例3:在多個文件中檢索某個指定的字元串。如在用戶主目錄下的所有文件中檢索字元串 hello ,可以使用如下命令:
創建 Gzip 格式的壓縮文件的命令為:
現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給後面的壓縮命令。完整的命令如下:
如果想瀏覽搜索到的文件(目錄)的詳細信息(如許可權和大小等),可以直接使用 -ls 選項。
例如:瀏覽所有 1G 以上大小的文件的詳細信息
與exec作用相同,區別在於,在執行命令之前,都會給出提示,讓用戶確認是否執行
與 exec 作用相同 ,起承接作用。區別在於 |xargs 主要用於承接刪除操作 ,而 -exec 都可用 如復制、移動、重命名等
例1:查找以ap或may開頭的文件
例2:查硬連接數大於2的文件或目錄
例3:查找含特定字元串的文件。查找當前目錄下含有"the string you want find…"字元串的文件:
例4:從根目錄開始查tmpfile,一旦查到馬上刪除
例5:如何用find查找某一天更改的文件?可以使用這一行命令來實現:
A Guide to the Linux 「Find」 Command
https://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html
https://blog.csdn.net/l_liangkk/article/details/81294260
https://blog.csdn.net/hetoto/article/details/84101745
http://c.biancheng.net/view/779.html
http://blog.chinaunix.net/uid-24648486-id-2998767
https://www.runoob.com/linux/linux-comm-find.html
https://www.jb51.net/article/147275.htm
B. linuxfind查找大於多少天的文件,並刪除之
linux查找超過一定時間的文件,並批量刪除
1、find . -maxdepth 4 -name "*-*" -mtime 3
-maxdepth的值決定是否對下面的子目錄進行遞歸查找
-mtime 3表示查找3天內的,-mtime +3表示查找超過3天的,也就是查找3天前的文件
2、find . -maxdepth 4 -name "*-*" -mtime 3 | sudo xargs rm -rf
-----------------------------------------------------------------------------------------------------------------------------
find ./ -maxdepth 4 -mtime +3 -a -mtime -20 -type f
-- 如果將xmaxdepth放置於-mtime之後,將會拋出這個錯誤
find: warning: you have specified the -maxdepth option after a non-option argument -mtime, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
-----------------------------------------------------------------------------------------------------------------------------
-mtime 0 表示文件修改時間距離當前為0天的文件,即距離當前時間不到1天(24小時)以內的文件。
-mtime 1 表示文件修改時間距離當前為1天的文件,即距離當前時間1天(24小時-48小時)的文件。
-mtime+1 表示文件修改時間為大於1天的文件,即距離當前時間2天(48小時)之外的文件
-mtime -1 表示文件修改時間為小於1天的文件,即距離當前時間1天(24小時)之內的文件
-----------------------------------------------------------------------------------------------------------------------------
-maxdepth 參數詳解
-maxdepth選項的作用就是限制find命令在目錄中按照遞減方式查找文件的時候搜索文件超過某個級別或者搜索過多的目錄,這樣導致查找速度變慢,查找花費的時間過多。例如,我們要在當前(.)目錄技巧子目錄中查找一個名叫fred的文件,我們可以使用如下命令
find . -maxdepth 2 -name fred
假如這個fred文件在./sub1/fred目錄中,那麼這個命令就會直接定位這個文件,查找很容易成功。假如,這個文件在./sub1/sub2/fred目錄中,那麼這個命令就無法查找到。因為前面已經給find命令在目錄中最大的查詢目錄級別為2,只能查找2層目錄下的文件。這樣做的目的就是為了讓find命令更加>
精確的定位文件,如果你已經知道了某個文件大概所在的文件目錄級數,那麼加入-maxdepth n 就很快的能在指定目錄中查找成功。
也即是-maxdepth 參數指定遞歸查找級別,如果-maxdepth 2 則查找當前目錄遞歸查找2層,-maxdepth 4 則查找當前目錄遞歸查找4層。
C. Linux下查找和刪除指定大小的文件
LINUX刪除大於/小於固定大小的文件等 刪除目錄下大小為0的文件 find./ -name"*"-type f -size 0c |xargs-n1rm-f 刪除當前目錄下面所有 test 文件夾下面的文件 find./ -name"test"-type d -execrm-rf {} ; 刪除文件夾下面的所有的.py文件 find./ -name'.py'-execrm-rf {} ; 顯示當前路徑下,大於50M的文件 find./ -size +50M 刪除當前路徑下,大於50M的文件 find./ -size +50M -execrm{} \; 參考: https://www.cnblogs.com/yuanmingzhou/p/11082966.htmlD. linux刪除大量文件的6種方法
1. rm
由於文件數量過多,rm不起作用。
2. find
大概43分鍾。
3. find with delete
用時9分鍾。
4. rsync
首先建立空文件夾blanktest
16s,很好很強大。
5. Python
大概用時8分鍾。
6. Perl
E. Linux find 命令詳解
find 命令的基本結構如下:
find [paths] [expression] [actions]
find 命令接受一個或多個 路徑 ( paths )作為搜索范圍,並在該路徑下 遞歸 地搜索。即檢索完指定的目錄後,還會對該目錄下的子目錄進行檢索,以及子目錄下的子目錄。。。直到到達目錄樹底部。
默認情況下(不帶任何搜索條件),find 命令會返回指定目錄下的 所有文件 ,所以常常需要通過特定的 expression 對結果進行 篩選 。
find 命令默認的 action 是將所有檢索結果列印至標准輸出。可以通過自定義 action ,讓 find 命令對搜索到的結果執行特定的操作。
這里先不做詳細解釋,簡單地測試下 find 命令:
find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持 wildcards 。如:
find /usr -name '*.txt' 查找 /usr 目錄下所有文件名以 .txt 結尾的文件
find /usr -name '????' 查找 /usr 目錄下所有文件名剛好為 4 個字元的文件
有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。
如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。
-type 選項最常用的參數如下:
find /usr -type d -name 'python*' 檢索 /usr 下所有文件名以 python 開頭的 目錄
find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。
find ~ -type d -empty 檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行 「反義」 (類似於 邏輯非 操作)。
如需要檢索 /usr 下所有文件名 不 以 .txt 為後綴的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以「翻轉」任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內容不為空的文件
為了檢索歸屬於特定用戶的文件或目錄,可以使用 -user 選項。
find / -type f -user starky 檢索根目錄下所有屬主為 starky 的文件
類似於 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。
有些時候,需要根據文件創建或修改的時間進行檢索。
Linux 系統中,與文件相關聯的時間參數有以下三種:
與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規則:
find /usr -type f -mtime 2 檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以 天 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項:
find /usr -type f -mtime +50 -mtime -100 檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5 檢索 /usr 下兩天前被修改過且 5 分鍾前又讀取過的文件
-size 選項允許用戶通過文件大小進行搜索(只適用於文件,目錄沒有大小……)。
表示文件大小的單位由以下字元組成:
另外,還可以使用 + 或 - 符號表示 大於 或 小於 當前條件。
find / -size +1G 檢索文件大小高於 1 GB 的文件
find 命令可以使用 -perm 選項以文件許可權為依據進行搜索。
如需要檢索 /usr 目錄下許可權為 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目錄下所有許可權為 r-xr-xr-x (即系統中的所有用戶都只有讀寫許可權)的文件和目錄,可以使用以下命令:
find /usr -perm a=rx
很多時候,我們只想匹配文件許可權的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行許可權,而不用管其讀寫許可權是什麼。
上述的需求可以通過以下命令實現: find / -type f -perm /a=x
其中 a=x 前面的 / 符號即用來表示只匹配許可權的某個子集(執行許可權),而不用關心其他許可權的具體設置。
-perm 選項也支持數字形式的文件許可權標記。
find /usr -perm 644 搜索 /usr 目錄下許可權為 644 (即 rwxr-xr-x )的文件
find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。
find / -maxdepth 3 搜索時向下遞歸的層數最大為 3
在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉 。
實際上 find 命令支持 「and」 和 「or」 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。
此外還可以使用 小括弧 對搜索條件進行 分組 。注意 find 命令中的小括弧常需要用 單引號 包裹起來。因小括弧在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
find /usr -type d -name 'python*'
該命令等同於:
find /usr -type d -a -name 'python*'
更復雜的組合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
-delete 選項可以用來刪除搜索到的文件和目錄。
如刪除 home 目錄下所有的空目錄:
find ~ -type d -empty -delete
-exec 選項可以對搜索到的結果執行特定的命令。
如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''
其中的 大括弧 ( {} )作為檢索到的文件的 佔位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來。
每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然後執行 -exec 後面的命令一次。
另一個很重要的用法是,在多個文件中檢索某個指定的字元串。
如在用戶主目錄下的所有文件中檢索字元串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''
創建 Gzip 格式的壓縮文件的命令為: tar -czvf filename.tar.gz <list of files>
現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。
原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給後面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
如果想瀏覽搜索到的文件(目錄)的詳細信息(如許可權和大小等),可以直接使用 -ls 選項。
find / -type file -size +1G -ls 瀏覽所有 1G 以上大小的文件的詳細信息
A Guide to the Linux 「Find」 Command
find 命令手冊 : man find
F. linux是否會定期刪除文件夾下面超過30日的文件
1.刪除文件命令:x0dx0afind 對應目錄 -mtime +天數 -name "文件名" -exec rm -rf {} \;x0dx0a實例命令:x0dx0afind /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;x0dx0a說明:x0dx0a將/opt/soft/log/目錄下所有30天前帶".log"的文件刪除。具體參數說明如下:x0dx0afind:linux的查找命令,用戶查找指定條件的文件;x0dx0a/opt/soft/log/:想要進行清理的任意目錄;x0dx0a-mtime:標准語句寫法;x0dx0a+30:查找30天前的文件,這里用數字代表天數;x0dx0a"*.log":希望查找的數據類型,"*.jpg"表示查找擴展名為jpg的所有文件,"*"表示查找所有文件,這個可以靈活運用,舉一反三;x0dx0a-exec:固定寫法;x0dx0arm -rf:強制刪除文件,包括目錄;x0dx0a{} \; :固定寫法,一對大括弧+空格+\+; x0dx0ax0dx0a2.計劃任務:x0dx0a若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行shell腳本文件中,再設置cron調度執行,那就可以讓系統自動去清理相關文件。x0dx0ax0dx0a2.1創建shell:x0dx0atouch /opt/soft/bin/auto-del-30-days-ago-log.shx0dx0achmod +x auto-del-30-days-ago-log.shx0dx0a新建一個可執行文件auto-del-30-days-ago-log.sh,並分配可運行許可權x0dx0ax0dx0a2.2編輯shell腳本:x0dx0avi auto-del-30-days-ago-log.shx0dx0a編輯auto-del-30-days-ago-log.sh文件如下:x0dx0a#!/bin/shx0dx0afind /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;x0dx0aok,保存退出(:wq)。x0dx0ax0dx0a2.3計劃任務:x0dx0a#crontab -ex0dx0a將auto-del-30-days-ago-log.sh執行腳本加入到系統計劃任務,到點自動執行x0dx0a輸入:x0dx0a10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1x0dx0a這里的設置是每天凌晨0點10分執行auto-del-7-days-ago-log.sh文件進行數據清理任務了。
G. linux中find命令的使用詳解
常用命令
find (目錄) [-type d | f] (文件夾 | 文件) -name (名稱,可使用正則表達式)
find /root -name "*core"
find /root -type d -name "*core" 文件夾
find /root -type f -name "*core" 文件
find /root -type f -path "*core" 路徑
find /root -name "*core" -delete 查到後刪除
find /root -size +20M (-20M) 大於20M(小於20M)
find /root -name "*core" -exec ls {} ; 對查找後的文件執行ls操作
壹——主要內容