刪除舊目錄,建立新的空目錄

刪除舊目錄,建立新的空目錄

單一 bash 指令>| foo建立一個空文件foo,無論它以前是非空的、空的還是遺失的。 (如果它是唯讀的或目錄,則會失敗。)

是否有類似的單一命令來建立空目錄?如果目錄之前就在那裡,它應該可以工作或不, 空的或不。與「不要重複自己」大致相同,rm -rf fooDir; mkdir -p fooDir但不違反「不要重複自己」。 (如果目錄或檔案是唯讀的,失敗是可以接受的。)

上下文是一個腳本,它會建立一個目錄來儲存其輸出,但會刪除任何先前執行的輸出。

答案1

我相信答案是:不會。沒有一個命令可以滿足您的要求,至少根據這兩個連結:

我只能說只是使用兩個單獨的命令。它可能很醜陋並且“不方便”,但 99% 可能是唯一的方法。

答案2

首先,找到一個空目錄。沒有普遍的的方式做到這一點,但你可以製作一個,或者找到一個可能的候選人find /var -type d -empty | xargs ls -ltd。例如,在 Ubuntu 14 上,/var/lib/ntpdate已經空了很多年了。另一個安全的選擇是/etc/ppp/resolv

那麼單一命令是rsync -a --delete /var/lib/ntpdate/ fooDir.尾部斜線很重要。不幸的是,如果沒有通用的/dev/nullDir,這個解決方案可能會讓新手感到困惑。因此,如果您的腳本必須多次執行此操作,那麼首先創建/tmp/emptyDir它然後將其與 rsync 一起使用是值得的。

相關內容