我需要删除目录中的所有文件,但排除其中一些。例如,在包含文件的目录中a b c ... z
,我需要删除除和之外的所有文件u
。p
有没有简单的方法可以做到这一点?
答案1
在这种情况下,我会输入
rm *
然后我按Ctrl+ X,*扩张 *
到所有可见的文件名中。
然后我可以从列表中删除我想保留的两个文件并最后执行命令行。
答案2
答案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]