使用 bash 命令删除除少数文件外的所有文件

Delete all files except a few using bash command

我有一个包含许多不同格式文件的目录。我想知道如何删除所有具有特定格式的文件(比方说 *.dat),除了一些相同格式的文件(例如 A.dat 和 B.dat)。请指教!

我会写一个小脚本(作为 command-line one-liner 它有点太大了):

#!/bin/sh
for f in *.dat; do
   case $f in
      (A.dat|B.dat)
         ;;           # do nothing
      (*)
         rm -- "$f";; # remove the file
   esac
done

作为替代方案,您可以使用交互式 rm -i *.dat 询问每个文件是否应删除。对不再需要的文件回答 y,对 A.datB.dat.

回答 n

zsh 和 bash 等现代 shell 也为您的问题提供了强大的 globbing 功能。我建议您阅读他们的手册页,这将帮助您成为一名精通 shell 大师。