題 使用Bash刪除某些擴展(快速)


我見過有關刪除目錄中某個擴展名的其他主題。但是,當我嘗試它時,它似乎工作但需要很長時間才能瀏覽目錄並在系統上說“權限被拒絕”。我想要的只是一個bash腳本,它遍歷整個計算機或其中的一部分,並刪除某個擴展名。如果python會更快,那很好。


3
2017-12-21 02:42


起源


如果它只是刪除某個擴展名會有危險嗎......會出現什麼問題?
擴展名是什麼意思?比如,一個Python模塊? - Natan
你真的想做什麼?
我的意思是文件擴展名。


答案:


您可以使用find我猜。

find / -name "*.myextension" -exec rm {} \;

但是,當然,從/搜索整個硬盤(或分區..)是一件很長的事情,你會得到的 沒有權限 只要你沒有以root身份運行它就會出錯。


2
2017-12-21 02:45



python會更快嗎?
因為它是每個人的分叉 rm。你應該使用 -exec rm -- {} +,或GNU查找 -delete。 - ormaaj
或者管道查找輸出 xargs rm,努力處理具有空格的文件名 - glenn jackman
@glennjackman請問你究竟用什麼命令來做同樣的事情但是讓它適用於空格?我會把xargs rm放在哪裡? - user1920468


使用xargs,假設你有GNU find和xargs:

find / -name \*.myextension -print0 | xargs -0 rm

此方法使用null char \0 作為文件名之間的分隔符:由於換行符是文件名中的合法字符,因此逐行讀取find的輸出不是100%安全的。


1
2017-12-21 18:18



它說 file: invalid option -- a file: invalid option -- t Usage: file [-bchikLNnprsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] [-M magicfiles] file... file -C -m magicfiles Try file --help'獲取更多信息 - user1920468
我在Mac上,這可能是問題嗎? - user1920468
不,錯字,應該是 find 不 file - glenn jackman
很抱歉給你帶來麻煩,但我將文件命名為“with spaces.myextension”並將其放在桌面上。然後我做了命令 find /users/<myusername>/Desktop -name \*.myextension -print0 | xargs -0 rm 並且文件仍然存在。 - user1920468
你看到了嗎? find /users/<myusername>/Desktop -name \*.myextension -print ? - glenn jackman