如何從目錄中刪除除一個之外的所有文件

刪除Linux文件

有時你需要 從目錄中刪除幾乎所有文件,但您想保留其中一個或部分。 當它們數量很多時,逐一檢查是一項繁瑣的任務。 這不是最好的選擇,有一些方法可以使 Linux 中的工作變得更加容易,並且您可以立即刪除所有需要的內容。

例如,您可能只想刪除以特定名稱開頭的文件或具有特定擴展名的文件等。 一切皆有可能事實上,在其他場合我已經在 LxA 中展示過類似的教程。 在這裡,您可以按照教程一步步操作,以簡單的方式刪除所有您想要的文件,除了您想要保存的文件。

最好的是 您不需要安裝任何程序, 使用 rm 和 find 等命令可以輕鬆完成此操作。 也就是說,任何 Linux 發行版中都已預安裝的程序。 當然,該方法將基於查找模式並使用這些匹配來僅消除您想要的內容。

那麼,為了消除有 幾種選擇, 這些是什麼…

使用 rm 從目錄中刪除文件

那麼,為了使用 rm命令 要消除你想要的東西,你首先需要知道一些識別模式的方法:

  • *(模式列表) – 匹配指定模式的零次或多次出現
  • ?(模式列表) – 匹配指定模式的零次或一次出現
  • +(模式列表) – 匹配指定模式的一次或多次出現
  • @(模式列表) – 匹配指定模式之一
  • !(模式列表) – 匹配除給定模式之一之外的任何內容

啟用extglob 為了使用它們,您必須首先運行以下命令:

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

眼睛! 我沒有指定它,但假設您有權執行這些操作,並且當您運行 rm 命令時您位於該目錄內。 請小心這一點,因為如果您在其他路徑中運行它,您最終可能會刪除不需要的文件。 也就是說,在運行這些命令之前,請確保您已 cd 進入所需的目錄。

現在您可以使用 rm 刪除您想要的任何內容。 例如, 從目錄中刪除除與名稱匹配的文件之外的所有文件 «lxa»:

rm -v !("lxa")

您還可以指定 您不想刪除的兩個或多個名稱。 例如,為了避免刪除“lxa”和“desdelinux”:

 rm -v !("lxa"|"desdelinux") 

您可以刪除所有文件, 除了那些有擴展名的 .mp3。 例如:

 rm -v !(*.mp3) 

完成後,您可以返回 禁用 extglob:

 shopt -u extglob 

使用 find 從目錄中刪除文件

rm 的另一種選擇是 使用 find 刪除你想要的內容。 您可以將管道和 xargs 與 rm 一起使用,或使用 find 的 -delete 選項。 也就是說,通用語法是:

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

例如,假設您想要 刪除目錄中除擴展名外的所有文件 .jpg,您可以使用這兩個命令之一,因為它們都會得到相同的結果:

find . -type f -not -name '*.jpg'-delete

find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}

相反,如果你想要 添加一些額外的圖案,你也可以。 例如,假設您不想從目錄中刪除 .pdf 或 .odt:

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

當然,你也可以用|做同樣的事情。 和 xargs 如前面的示例所示。 順便說一句,我們已經使用了 -不否認, 但您可以刪除它以使其積極,即刪除匹配模式而不排除它們。

使用 GLOBIGNORE 變量從目錄中刪除文件

最後,還有 另一種選擇 find 和 rm,這是通過使用環境變量指向要刪除或排除的文件。 例如,假設您要刪除名為 Downloads 的目錄中的所有文件,並保存 .pdf、.mp3 和 .mp4 文件。 在這種情況下,您可以執行以下操作:

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。