我有一个大文件A(包含电子邮件),每封邮件一行.我还有另一个包含另一组邮件的文件B.
我将使用哪个命令从文件A中删除文件B中出现的所有地址.
所以,如果文件A包含:
A
B
C
Run Code Online (Sandbox Code Playgroud)
和文件B包含:
B
D
E
Run Code Online (Sandbox Code Playgroud)
然后文件A应该留下:
A
C
Run Code Online (Sandbox Code Playgroud)
现在我知道这是一个可能经常被问到的问题,但我只在网上发现了一个命令错误的分隔符.
任何帮助将非常感激!有人肯定会想出一个聪明的单行,但我不是shell专家.
我知道Git会以某种方式自动检测文件是二进制还是文本,如果需要,可以使用gitattributes手动设置它.但是有没有办法向GIT询问它如何处理文件?
所以我们可以说我有在这两个文件一个Git仓库:一个ascii.dat含纯文本和文件binary.dat含随机二进制的东西文件.Git将第一个dat文件作为文本处理,将辅助文件作为二进制文件处理.现在我想写一个Git webfrontend,它有一个文本文件查看器和二进制文件的特殊查看器(例如,显示十六进制转储).当然,我可以实现自己的文本/二进制检查,但如果查看器依赖于Git如何处理这些文件的信息,那将会更有用.
那么我怎么能问Git它是否将文件视为文本或二进制文件?
我有一个存储库,其中包含许多自动生成的源文件,我已将其标记为"二进制" .gitattributes(它们已签入,因为并非每个人都可以访问生成器工具).另外,repo在被忽略的目录中有很多source-ish文件(再次,作为构建过程的一部分生成),以及许多实际的二进制文件(例如像图标这样的小资源文件).
我现在想在repo中找到所有非自动生成和非忽略的文件.我以为我只是做了这个find和一些排除,但现在我有一个可怕的find声明与十几个条款(它仍然不完美的工作).git ls-files有效,但显示所有二进制文件没有区别,我必须过滤掉.
所以,我想知道:是否有一个简单的命令我可以运行,它列出了检查到repo的每个文件,并git考虑了一个"文本"文件?
对不起,如果这是上一个问题的重复,但我找不到我正在寻找的东西.我正在将一个大型cvs代码集(20多个存储库,有15年的历史--10-15 GB大小)转换为git.大部分的大小是由于过去与代码一起提交的二进制文件.虽然一些二进制文件是可以完全删除的文件,但是保留其中许多文件以及它们的历史记录是可取的.但是,我们不希望回购膨胀.
我们目前正计划使用git-fat来存储二进制文件,但我正在编写脚本来自动转换文件.我的第一步是尝试识别repo中包含二进制文件的所有文件(包括已删除的文件).有没有简单的方法来实现这一目标?谢谢你的帮助
编辑
我实际上认为我找到了一个合理的方法,我只是跑
git log --numstat <first commit hash> HEAD
Run Code Online (Sandbox Code Playgroud)
这将打印出前面有两列的所有文件的列表,第一列包含文件的更改次数(我不确定它是以字节还是行为单位).但重要的部分是二进制文件,它是' - '.通过选择带有此标记的行,并将它们"唯一",我相信我会获得完整的二进制文件列表.
这个策略有什么缺陷吗?