在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 {} \;