比方說,我想把當前目錄下的全部文件移到某個子目錄下,先建好目錄
mkdir myfolder
然後用mv把全部文件移進去。等等,我可不想把myfolder移到myfolder裡面(事實上也不會,linux會提示一個錯誤 mv: 無法將目錄"myfolder" 移動至自身的子目錄"./myfolder/myfolder" 下)。mv還好辦,但換成是rm呢?我想刪除該目錄下的除myfolder之外的其他文件和目錄。有啥招數呢?
第一招
find -maxdepth 1 -not -name myfolder -not -name . -exec rm -rf {} \;
還可以寫成
find -maxdepth 1 \! -name myfolder \! -name . -exec rm -rf {} \;
看出來了 \! 等同於 -not
第二招
find -not -regex '\./myfolder.*' -not -regex '\.' -exec rm -rf {} \;
需要略懂一點正則表達式。