打印文件名列表,但文本文件中指定的文件名除外

时间:2018-07-13 15:23:38

标签: linux bash shell

我有一个文件夹 test

file1.txt
file2.wav
file3.txt
file4.py

我在 test 文件夹之外有一个 dont_include.txt 文件,其中包含内容

file1.txt
file4.py

如何打印 test 文件夹中的所有文件名,但 dont_include.txt 中列出的文件名除外

所需的输出:

file2.wav
file3.txt

1 个答案:

答案 0 :(得分:1)

您可以使用grep:

ls test | grep -xvFf dont_include.txt -
  • -f表示模式列表来自文件,在这种情况下为dont_include.txt。
  • -F表示模式被解释为文字字符串而不是正则表达式,因此a.txt与abtxt不匹配
  • -x仅匹配整行,即other_file.txt不会匹配file.txt
  • -v表示我们要打印不匹配
  • -(可选)表示我们要过滤的列表是标准输入,在这种情况下,即ls的输出。

对于名称中带有换行符的文件,它不起作用(但是,将它们存储在文件中的每一行已经是错误的了。)