我想列出.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