簡體   English   中英

如何遞歸刪除具有不同擴展名的多個文件?

[英]How to recursively delete multiple files with different extensions?

我正在嘗試編寫一個命令,以從當前目錄及其所有相關子目錄中遞歸刪除具有不同擴展名(*.extension1、*.extension2 等)的多個文件。

到目前為止,我從另一篇文章中得到了這個命令,但我無法鍛煉如何使它適應同一命令行中的多個文件:

find . -name "*.extension1" -type f -delete

是不是像下面這么簡單?

find . -name "*.extension1";"*.extension2" -type f -delete

附帶說明一下,這些都是我不需要的 output 文件,但並非所有文件都必須始終為 output,因此某些擴展名可能不存在。 這就像一般的清理命令一樣。

find . \( -name "*.extension1" -o -name "*.extension2" \) -type f -delete

查找文檔(-name“ .py”-o -name“ .html”) - exec file {} \\;

要么

find . -regextype posix-egrep -regex ".*\.(extension1|extension2)$" -type f -delete

只需添加更多選項。 正則表達式解決方案也適用,但這個更好更安全。

find . \( -name '*.ext1' -or -name '*.ext2' \) -type f -delete

編輯:您可能需要-or也可以。 在刪除之前,首先測試它而不使用-delete選項。 (2)根據gniourf_gniourf的建議添加了一對()

也許regexp會幫助你

find . -regextype posix-awk -regex "(.*.ext1|.*.ext2)" -type f -delete

另一個使用rm的解決方案:

rm -rf ./**/*.{txt,nfo,jpg,jpeg,png,exe,url}

如果您也想刪除其他文件,例如那些以sample. 只需添加:

rm -rf ./**/*.{txt,nfo,jpg,jpeg,png,exe,url} ./**/*/sample.*

這個簡單的命令將在該目錄中以遞歸方式刪除extension1和extension2的所有文件。 find . -name *.extension1 -o -name *.extentions2 find . -name *.extension1 -o -name *.extentions2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM