
假設目前目錄下有多個子目錄,其中一個名為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
如果我的正規表示式錯誤,請隨意編輯上面的內容...