刪除除一個之外的所有子目錄

刪除除一個之外的所有子目錄

假設目前目錄下有多個子目錄,其中一個名為A。

如何用Bash刪除除A之外的所有子目錄?

答案1

Bash 擴展了通配符(首先測試,然後刪除回顯):

shopt -s extglob
echo rm -rf !(A)

答案2

find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;

答案3

關於什麼:

mv A /tmp/
rm * -rf
mv /tmp/A .

這避免了其他命令中拼寫錯誤的一些“可怕”情況。

請注意執行上面的 rm * -rf 指令時不要位於根 (/) 資料夾中。

答案4

我通常透過先執行正確的 ls 命令來做到這一點。我不在unix機器上,但類似:

ls -lda“[^A]”

一旦正確,將其傳遞給命令

ls -lda「[^A]」| xargs rm-rf

如果我的正規表示式錯誤,請隨意編輯上面的內容...

相關內容