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

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

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

答案1

使用Bash:

shopt -s extglob
rm !(sess_*)

答案2

一个解决方案是通过 grep 管道传输。例如:

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

另一个选项是 find (这也排除目录):

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

答案3

我更喜欢找到:

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

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

答案4

在上述

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

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

其他文件(例如 ppp_sess_333)将会被留下。

相关内容