列出除一个之外的所有扩展名为 .log 的文件

列出除一个之外的所有扩展名为 .log 的文件

我想列出.log除 file 之外的所有扩展名文件backup.log

我尝试过使用这个命令:

ls *.log -I "backup.log"

但所有日志文件都被列出,甚至backup.log

我如何列出除 之外的所有日志文件backup.log

答案1

shell 扩展了通配符,因此ls将其backup.log作为参数之一。

使用扩展模式(通过 启用shopt -s extglob):

ls !(backup).log

答案2

一种可能性是:

 find . -maxdepth 1 -mindepth 1 -name \*.log -a -not -name backup.log

即查找当前目录或以下目录中的所有文件,精确深度为 1(因此实际上仅在当前目录中,而不是当前目录本身的名称),名称与模式匹配,*.log而不是backup.log

答案3

TXR:

$ ls *.patch
install-tests.patch  match.patch  netbsd.patch  specials.patch  wlist.patch
$ txr -t '(glob "*.patch")'
install-tests.patch
match.patch
netbsd.patch
specials.patch
wlist.patch
$ txr -t '(set-diff (glob "*.patch") (glob "[mn]*.patch"))'
install-tests.patch
specials.patch
wlist.patch

答案4

ls解析through的输出怎么样grep

ls -l *.log | grep -v backup.log

相关内容