bash - 查找唯一的文件

标签 bash shell sed hash command-line

有什么方法可以找到唯一/修改过的文件吗?

我有两个带有哈希值和名称的文本文件,例如:

文件1.txt:

   c3f2b563b3cb091esada5b40fbfd5e60f526da3d *10.88.10/1.xml
   770aafff757f83e55c4cadaad7144e512299788d *10.88.10/config/2.csv
   38045a78f87addaddada4c3754bea76c72cbfe25 *10.88.10/3.txt
   asddd132dfdada1231431411ddsfadfgdkkgdada *10.88.10/4.js

文件2.txt:

c3f2b563b3cb091esada5b40fbfd5e60f526da3d *10.88.12/1.xml
770aafff757f83e55c4cadaad7144e512299788d *10.88.12/config/2.csv
38045a78f87addaddada4c3754bea76c72cbfe25 *10.88.12/3.txt
asddd1222131231231sadsdaddsfadfgdkkgdada *10.88.12/4.js
dadadadawqeqweqwg32542362436532wqrewqr32 *10.88.12/5.py

如您所见,file1.txtfile2.txt 中的一些文件是相同的。 file2.txt 添加了一个名为 5.js 的文件和一个名为 4.js 的更新/修改文件。

有什么方法可以输出 file2.txt 中修改和添加的文件吗?

预期输出:

    10.88.12/4.js
    10.88.12/5.py

我尝试了 diff 命令,但它显示所有文件因文件名而不同(10.88.10 到 10.88.12)。

我尝试了 cut -d' ' f1 但在 diff 命令之后我找不到输出文件名的方法。

最佳答案

使用awk:

$ awk 'NR==FNR{c[$1]++;next}; { if (c[$1] == 0) print $2; }' File1.txt  File2.txt
*10.88.12/4.js
*10.88.12/5.py

基于 https://unix.stackexchange.com/questions/174599/using-diff-on-a-specific-column-in-a-file

关于bash - 查找唯一的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60432952/

相关文章:

linux - 如何使用sed删除带通配符的字符串

bash - 如何在单个 ssh 命令中使用 bash $(awk)?

linux - 搜索相似的重复文件名(文件名末尾的日期戳不同)

shell - 在 javascript shell 中使用 mongo 脚本?

regex - 在 Bash 中的一行内交换字符串

regex - 使用 Bash 将字符串添加到正则表达式匹配前面

linux - 如何设置 bash 脚本在 linux ubuntu 服务器运行时随时在后台运行

python - 将文件中的数据插入 SQLite 数据库

linux - 交互式和非交互式 shell 中的环境变量

linux - 在 shell 脚本中比较文件大小