成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

rm命令弱爆了!你了解嗎?

系統 Linux
創建、刪除和修改文件是用戶在 Linux 系統中執行的非常常見操作。大家都知道,在 Linux 系統里使用 rm 命令刪除單個文件時,幾乎一瞬間就完成了。但是如果文件數量很大,那么刪除操作就需要很長時間才能完成。

[[436587]]

大家好,我是良許。

創建、刪除和修改文件是用戶在 Linux 系統中執行的非常常見操作。大家都知道,在 Linux 系統里使用 rm 命令刪除單個文件時,幾乎一瞬間就完成了。但是如果文件數量很大,那么刪除操作就需要很長時間才能完成。

你有沒想過,刪除 50 萬個小文件,需要花費多少時間?

我寫這篇文章的目的,是為了找出在 Linux 中刪除巨量文件的最快方法。通過測試發現,rm 命令簡直弱爆了!

我們將從一些簡單的文件刪除方法開始,然后比較不同方法完成文件刪除任務的速度??纯茨姆N方式刪除速度最快。

1. 文件刪除的幾種方式

在 Linux 系統中刪除文件,最常用的命令就是 rm 命令。這個命令相信大家都已經很熟悉了,我們來簡單回顧一些 rm 命令的例子。

  1. $ rm -f testfile 

-f 選項在上面的命令中,表示將在不要求確認的情況下強行刪除文件。

  1. $ rm -rf testdirectory 

這個命令將刪除名為 testdirectory 的目錄以及該目錄中的所有內容(使用的 -r 選項是遞歸刪除文件)。

而刪除目錄,我們還有另一個命令,那就是 rmdir ,但是它只有在目錄為空時才會刪除該目錄。

  1. $ rmdir testdirectory 

現在我們看看在 Linux 中刪除文件的一些其它不同方法。

我最喜歡的方法之一是使用 find 命令,再進行刪除操作。find 命令是一個非常方便的工具,可用于根據文件的類型、大小、創建日期、修改日期和更多不同的條件來搜索文件。

我們來看一個 find 命令使用 -exec 來調用 rm 命令的例子。

  1. $ find /test -type f -exec rm {} \; 

上述命令將刪除 /test 目錄中的所有文件。首先 find 命令將查找目錄中的所有文件,然后對于每個搜索結果,它會執行 rm 命令。

我們再看看可以與 find 命令一起使用的一些不同方法來刪除文件。

  1. $ find /test -mtime +7 -exec rm {} \; 

在上述示例中,find 命令將搜索 /test 目錄中 7 天前修改過的所有文件,然后刪除每個文件。

  1. $ find /test -size +7M -exec rm {} \; 

上述示例中,將搜索目錄 /test 目錄中所有大于 7M 的文件,然后再刪除它們。

在以上我們列出來的所有 find 命令示例中,都會為找到的每個文件調用 rm 命令。例如,在上面的最后一個 find 命令中,如果結果中有 50 個大于 7M 的文件,那么將調用 50 次 rm 命令刪除文件。而這樣的操作將需要花費更長的時間。

除了在 find 中借助 -exec 參數調用 rm 命令外,還有一個更好的選擇,那就是使用 -delete 選項。比如:

  1. $ find /test -size +7M -delete 

達到的效果與上一條命令一樣。

2. 刪除巨量文件時用什么命令最快?

話不多說,我們直接上測試。

首先借助一個簡單的 bash for 循環創建 50 萬個文件。

  1. for i in $(seq 1 500000); do echo testing >> $i.txt; done 

上述命令中,將在當前工作目錄中創建 50 萬個 txt 文件,名稱從 1.txt 到 500000.txt,每個文件都包含 testing 的文本內容,因此文件大小至少在幾千字節的范圍。

在創建了 50 萬個文件后,我們將嘗試使用多方式來刪除它們,看看哪種方式刪除巨量文件速度最快。

Round 1:rm 命令

首先讓我們使用簡單的 rm 命令,同時我們使用 time 命令來計時。

  1. time rm -f * 
  2. -bash: /bin/rm: Argument list too long 
  3. real    0m11.126s 
  4. user    0m9.673s 
  5. sys     0m1.278s 

我們可以看到 rm 命令的執行結果是 Argument list too long ,這意味著該命令沒有完成刪除,因為給 rm 命令的文件數量太大而無法完成,所以它直接就躺平罷工了。

不要注意 time 命令顯示的時間,因為 rm 命令沒有完成它的操作,time 命令只管顯示你命令執行了多長時間,而不關心命令的最終結果。

Round 2:使用 -exec 參數的 find 命令

現在讓我們使用我們之前看到的帶有 -exec 參數的 find 命令。

  1. time find ./ -type f -exec rm {} \; 
  2. real    14m51.735s 
  3. user    2m24.330s 
  4. sys     9m48.743s 

從我們使用 time 命令得到的輸出可以看出,從單個目錄中刪除 50 萬個文件需要 14 分 51 秒。這是相當長的時間,因為對于每個文件,都會執行一個單獨的 rm 命令,直到刪除所有文件。

Round 3:使用 -delete 參數的 find 命令

現在讓我們通過在 find 命令中使用 -delete 選項來測試消耗的時間。

  1. time find ./ -type f -delete 
  2.  
  3. real 5m11.937s 
  4.  
  5. user 0m1.259s 
  6.  
  7. sys 0m28.441s 

刪除速度大大提高,只用了 5 分 11 秒!當你在 Linux 中刪除數百萬個文件時,這是速度的驚人改進。

Round 4:Perl 語言

現在讓我們看看使用 Perl 語言刪除文件是如何工作的,以及它與我們之前看到的其他刪除方式相比的速度。

  1. time perl -e 'for(<*>){((stat)[9]<(unlink))}' 
  2. real    1m0.488s 
  3. user    0m7.023s 
  4. sys     0m27.403s 

從結果可以看出,Perl 只用了大約 1 分鐘就刪除了該目錄中的 50 萬個文件,與我們之前看到的其他 find 命令和 rm 命令相比,這個速度非常之快!

但是,如果您有興趣在使用 Perl 時用到更復雜的選項,則需要對 Perl 正則表達式有一定的了解。

Round 5:rsync 命令

還有一種較少使用且鮮為人知的方法可用于刪除文件夾內的大量文件,這種方法正是我們著名的工具 rsync ,它的基本用法是用于在 Linux 中的兩個本地和遠程位置之間傳輸和同步文件。

現在我們來看看如何使用 rsync 命令的來刪除文件夾內所有文件。其實很簡單,我們可以通過將具有大量文件的目標目錄與空目錄進行同步來實現刪除的操作。

在我們的例子中, /test 目錄(目標目錄)有 50 萬個文件,我們再創建一個名為 blanktest 的空目錄(源目錄)?,F在,我們將在 rsync 命令中使用 -delete 選項,這將刪除目標目錄中的所有源目錄中不存在文件。

  1. time rsync -a --delete blanktest/ test/ 
  2. real    2m52.502s 
  3. user    0m2.772s 
  4. sys     0m32.649s 

可以看到,僅用 2 分鐘 52 秒就完成刪除。

因此與 find 命令相比,如果您想清空包含數百萬個文件的目錄,使用 rsync 命令會更好。

3. 小結

下表總結了 Linux 中采用不同方式刪除 50 萬個文件的速度,方便大家參考。

命令 花費時間
rm 命令 無法刪除大量文件
使用 -exec 參數的 find 命令 14 分 51 秒
使用 -delete 參數的 find 命令 5 分 11 秒
Perl 1 分鐘
rsync 命令 2 分 52 秒

 

責任編輯:武曉燕 來源: 良許Linux
相關推薦

2020-11-12 07:49:18

MySQL

2016-03-29 19:42:59

2018-02-08 09:11:25

Linux命令rm

2018-11-22 21:45:59

物聯網卡運營商流量卡

2020-12-28 11:13:24

比特幣數據匿名幣

2021-02-21 00:22:32

技術團隊工具

2021-10-08 21:00:52

數據弱引用對象

2015-04-17 10:10:35

FDDTDDNDD

2018-05-03 16:27:29

RNN神經網絡ResNet

2023-02-06 18:23:42

ExcelChatGPT

2022-07-26 00:00:22

HTAP系統數據庫

2012-09-06 17:54:28

2014-04-17 16:42:03

DevOps

2014-08-29 11:00:35

光纖芯片

2021-01-03 09:44:34

解壓軟件解壓神器應用

2020-10-23 09:31:20

Redis-Cli REPL模式

2017-12-15 16:03:27

2011-08-23 13:50:17

程序員

2010-09-06 14:03:06

PPP身份認證

2021-01-15 07:44:21

SQL注入攻擊黑客
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷精品国产一区二区三区 | 久久综合伊人一区二区三 | av永久免费 | 欧美日韩一区二区三区不卡视频 | 日韩精品在线一区二区 | 99日韩| 粉嫩高清一区二区三区 | www97影院| 亚洲毛片在线观看 | 久色| 日韩不卡一区二区 | 日韩欧美亚洲 | 在线观看中文字幕视频 | 精品视频一区二区三区四区 | 91麻豆产精品久久久久久夏晴子 | 亚洲精品99999 | 在线观看欧美一区 | 九九福利 | 91青娱乐在线 | 国产三区视频在线观看 | 国产999精品久久久久久 | 精品久久电影 | 91精品免费 | 波多野结衣电影一区 | 男女羞羞在线观看 | 最新中文字幕一区 | 亚洲国产成人av好男人在线观看 | 久久久91 | aa级毛片毛片免费观看久 | 91亚洲国产成人久久精品网站 | 色婷婷综合久久久中文字幕 | 一区二区三区免费 | 毛色毛片免费看 | 中文字幕欧美日韩 | 99这里只有精品视频 | 日韩精品在线视频 | 一区二区三区国产 | 国产精品久久久久久久久久久久久 | 97精品国产97久久久久久免费 | 久久精品一区二区三区四区 | 小h片免费观看久久久久 |