如何删除目录中除部分文件之外的所有文件?

如何删除目录中除部分文件之外的所有文件?

我需要删除目录中的所有文件,但排除其中一些。例如,在包含文件的目录中a b c ... z,我需要删除除和之外的所有文件up有没有简单的方法可以做到这一点?

答案1

在这种情况下,我会输入

rm *

然后我按Ctrl+ X*扩张 *到所有可见的文件名中。

然后我可以从列表中删除我想保留的两个文件并最后执行命令行。

答案2

除了在 bash 中rm,其他所有u,p操作只需输入:

rm !(u|p)

这需要设置以下选项:

shopt -s extglob

查看更多:glob - Greg 的维基

答案3

您可以使用find

find . ! -name u ! -name p -maxdepth 1 -type f -delete
  • !对下一个表达式求反
  • -name指定文件名
  • -maxdepth 1将使 find 过程仅针对指定的目录(find默认情况下遍历目录)
  • -type f仅处理文件(而不是目录)
  • -delete将删除文件

然后你可以根据find 的手册页

更新

  • 请记住,表达式元素的顺序很重要(参见文档)
  • 首先使用-print而不是测试你的命令-delete

    find . ! -name u ! -name p -maxdepth 1 -type f -print
    

答案4

有点类似这个答案但不需要特殊选项,据我所知,以下是任何(模糊地)/bin/sh 类似 shell(例如 bash、zsh、ksh 等)支持的“古老”功能

rm [^up]

相关内容