在 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)将会被留下。