linux - 我有一个文件,我想将它与另一个目录中的所有文件进行比较,以找出哪个相同
问题描述
我有一个文件 foo 和一个文件夹栏。文件夹栏是一个多级目录,最终有文件:
bar/1/123/file
bar/2/12/file
bar/1/1/file
foo 与其中一个文件相同,我正在尝试查找它是哪个文件。我怎么能在Linux上做到这一点?我想它将与 find 命令一起使用。
解决方案
如果您的 bash 不是旧石器时代的,您可以使用纯 bash 轻松做到这一点:
shopt -s globstar
for f in bar/**/*; do
if [[ -f "$f" ]] && cmp -s foo "$f"; then
printf "The matched file is '%s'\n" "$f"
break
fi
done
2009 年发布的 bash 4.0 中引入了该globstar
选项,它允许使用bar/**/*
表示“目录树中以 .bar
break
in 循环是一种优化,它在找到一个文件后停止搜索,因为问题描述清楚地说明了“其中一个文件” 。如果可能有多个匹配项并且您需要知道所有匹配项,请删除break
.
推荐阅读
- javascript - Javascript中的正则表达式,无需向后查找以@包围的数字
- java - 使用函数式编程,提取提供子类对象的超类字段
- wolfram-mathematica - 绘制它的最佳方法
- arrays - 数组的副本正在改变原始
- c# - 通过扩展方法进行模板特化
- ruby - 导出的资源不适用于 puppet
- c++ - std::istream& 运算符>>(std::istream& , ClassName& )
- php - 匿名存储电子邮件地址
- facebook-messenger-bot - Facebook Messenger Bot - 将控制权从机器人传递给人类并启用键盘输入
- python - Flask 和 Certbot