linux - 打印文件名列表,文本文件中指定的文件名除外
问题描述
我有一个文件夹测试
file1.txt
file2.wav
file3.txt
file4.py
我在test文件夹之外有一个dont_include.txt文件,其中包含内容
file1.txt
file4.py
如何打印测试文件夹中的所有文件名,除了dont_include.txt中列出的文件名
期望的输出:
file2.wav
file3.txt
解决方案
您可以使用 grep:
ls test | grep -xvFf dont_include.txt -
-f
表示模式列表取自文件,在这种情况下是 dont_include.txt-F
意味着模式被解释为文字字符串而不是正则表达式,因此 a.txt 不会匹配 abtxt-x
只匹配整行,即other_file.txt
不会被匹配file.txt
-v
表示我们要打印不匹配的行-
(可选)表示我们过滤的列表是标准输入,即ls
本例中的输出。
它不适用于名称中带有换行符的文件(但是将它们存储在每行一个文件中已经是错误的)。
推荐阅读
- node.js - Bot Framework WebChat 失败 [405] 方法不允许
- swift - 在 SCNNode / ARKit Swift 中获取图像的大小
- excel - 将 CSV 数据写入 Excel 文件
- visual-studio-code - 如何在 Visual Studio for Mac 中“添加下一个事件”?
- sql - 无法将数据从 SQL 粘贴到 Excel
- python-3.x - 按其他列重采样和求和
- android-layout - Ionic 3 - 不同分辨率的图像尺寸:LDPI、MDPI、HDPI、XHDPI、XXHDPI、XXXHDPI
- android - setTitleTextColor 不会改变文本的颜色
- laravel - Ionic 和 Laravel 之间的“访问控制允许来源”
- python - Python中的曲线拟合受到具有正导数的约束