Bash 使用文本文件提取目录中不匹配的文件

Bash 使用文本文件提取目录中不匹配的文件,bash,awk,grep,Bash,Awk,Grep,我在一个目录中有100个文件,一个文本文件列出了其中35个文件 ####Directory apple carrot orange pears bananas ###text file apple carrot orange 我想使用这个有文件名的文本文件,并在目录中进行比较,以将不匹配的文件名放入一个单独的文件中。因此,它将是一个如下所示的文件: ##unmatched text file pears bananas 我知道如果搜索词是一个特定的字符串,那么可以使用find来实现这一

我在一个目录中有100个文件,一个文本文件列出了其中35个文件

####Directory 
apple carrot orange pears bananas

###text file
apple
carrot
orange 
我想使用这个有文件名的文本文件,并在目录中进行比较,以将不匹配的文件名放入一个单独的文件中。因此,它将是一个如下所示的文件:

##unmatched text file
pears
bananas

我知道如果搜索词是一个特定的字符串,那么可以使用find来实现这一点,但我无法理解这一点

假设文本文件包含目录中文件的子集。另外,假设文件名为list.txt,目录名为dir1,则以下操作将起作用:

(cat list.txt; ls -1 dir1) | sort | uniq -u
解释
  • 命令
    (cat list.txt;ls-1 dir1)
    启动子shell,执行
    cat
    ls
    命令
  • 然后对组合输出进行排序,
    uniq-u
    将挑选出唯一的(不重复的)输出
我相信这就是你想要的。如果有效,您可以重定向到另一个文件:

(cat list.txt; ls -1 dir1) | sort | uniq -u > list2.txt

假设文本文件包含目录中文件的子集。另外,假设文件名为list.txt,目录名为dir1,则以下操作将起作用:

(cat list.txt; ls -1 dir1) | sort | uniq -u
解释
  • 命令
    (cat list.txt;ls-1 dir1)
    启动子shell,执行
    cat
    ls
    命令
  • 然后对组合输出进行排序,
    uniq-u
    将挑选出唯一的(不重复的)输出
我相信这就是你想要的。如果有效,您可以重定向到另一个文件:

(cat list.txt; ls -1 dir1) | sort | uniq -u > list2.txt