删除所有不以某事开头的文件

在Linux中,如何删除不以pref开头的目录中的所有文件(例如sess_ *)?

使用Bash:

shopt -s extglob rm !(sess_*) 

我更喜欢find:

find ./ -type f \( \! -name 'sess_*' \) -exec rm {} \;

您可能需要调整深度以避免recursion。

在上面

cd / tmp; ls -1 | grep -v sess_ | xargs rm -f

grep应该是grep -v'^ sess_ *'

其他明智的文件,如ppp_sess_333将被留下。

一个解决scheme是通过greppipe道。 例如:

 cd /tmp ; ls -1 | grep -v sess_ | xargs rm -f 

另一个选项是find(这也不包括目录):

 find /tmp ! -name sess_\* ! -type d -exec rm -f {} \;