除少数几个文件外,其余所有文件

除少数几个文件外,其余所有文件

如果有某种特殊语法,我可以查看cat目录中除选定文件之外的所有文件。例如,假设我有大约 1200 个文本文件,每个文件包含一些行,大约 3 或 4 行,但有几个文件除外:

readme.md
contrib.rst
licence.txt

更长。我想查看除上面提到的 3 个(如果可能的话,更多)文件之外的所有文件的内容。

我尝试了以下命令:

cat !{readme.md,contrib.rst,licence.txt}*.*

cat因为我在某处看到过如下用法:

cat [!t][!m][!p]*.sh

我认为,由于{a,b}在 bash 脚本中表示集合,因此否定它应该可以工作。当然我错了。

答案1

尝试使用 bash 的扩展模式匹配功能:

shopt -s extglob
cat !(readme.md|contrib.rst|licence.txt)

答案2

使用 bash 尝试一下:

GLOBIGNORE="readme.md:contrib.rst:licence.txt"
cat *
unset GLOBIGNORE

答案3

您已经尝试过什么?

您是否总是想跳过相同的文件?

在这种情况下,你可以在命令中对其进行硬编码。例如
find ! -name readme.md -o ! -name contrib.rst -o ! -name licence.txt -exec cat {} \+

现在,如果您想要跳过所有大于 4 行的文件,而事先不知道文件名,那么解决方案显然会变得更加复杂。在这种情况下,请编辑您的帖子。

答案4

不修改当前 shell 设置可以在子 shell 中执行 Cyrus 提出的每个建议

(GLOBIGNORE="readme.md:contrib.rst:licence.txt" ; cat *)

(shopt -s extglob; cat !(readme.md|contrib.rst|licence.txt))

相关内容