假设我有一个包含许多子文件夹的文件夹,它们只应该包含存档文件,并且我想检查是否有其他文件类型。
我可以使用命令
ls -l -R /backup --ignore="*.zip" --ignore="*.7z"
这将显示我需要的信息,但也包括每个文件夹名称,例如
/backup/2000/Jan:
total 0
/backup/2000/Feb:
total 0
ETC
有什么方法可以排除仅包含被忽略文件的文件夹的详细信息吗?
答案1
我有一个包含很多子文件夹的文件夹,它们只应该包含存档文件,我想检查是否有其他文件类型
这看起来不像是一份工作ls
。看起来像是一份工作find
。要求它列出与存档文件模式不匹配的常规文件。
find /backup -type f ! -name '*.zip' ! -name '*.7z'
如果您想查看与文件名-ls
相同的信息,请在末尾添加。 ls -l
(并非在所有实现中都可用find
。)
答案2
你有几个解决方案。最简单的方法可能是使用 shell 的扩展通配符。
shopt -s extglob
ls -l **/*!(.zip|.7z)
您也可以使用find
.
find /backup -type f ! \( -name "*zip" -o -name "*7z" \)
第一个命令将排除隐藏目录,第二个命令不会。