比方说,我想把当前目录下的全部文件移到某个子目录下,先建好目录
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 {} \;
需要略懂一点正则表达式。