列出输出中不包含在另一个文件内容中的所有行

列出输出中不包含在另一个文件内容中的所有行

我有一个文件目录。我想检查其中哪些文件未在另一个文件 ( content.txt) 的内容中列出。

content.txt包含文件名,但还包含前后的一些文本,所以我正在寻找子字符串搜索。

例子:

$ ls
./file1 ./file2 ./file3

$ cat /some/path/content.txt
name: file2 (y)
age: file6 (z)
height: file9 (x)

我希望假设的脚本返回:

file1
file3

我当前的非工作解决方案是使用find .列出所有文件,然后使用 sed 替换来替换文件夹名称,然后尝试使用 grep 来查看它是否在文件中: find . | sed 's|MyFolder/||' | xargs -I {} -0 grep {} /some/path/content.txt

这似乎效率低下,我不知道如何进一步进行。我考虑过使用 grep-qs并检查 xargs 的退出代码,但这只会产生一个输出,而不是检查每个文件。

find . | sed 's|MyFolder/||' | (xargs -I {} -0 grep {} /some/path/content.txt) && echo "true" || echo "false"

相关内容