编辑版本到一个匆忙的问题!
当我在两个目录上运行 diff 时,例如:$ diff Linux1 Linux2
输出为 $ Only in Linux2: COMPLETELYDIFFERENT22.txt
我想将该文件(不仅仅是输出)复制到在同一命令中创建的新目录中。我已经多次看到这个问题,但没有一个答案有效!我确信答案非常简单,但我似乎无法找到它。
编辑版本到一个匆忙的问题!
当我在两个目录上运行 diff 时,例如:$ diff Linux1 Linux2
输出为 $ Only in Linux2: COMPLETELYDIFFERENT22.txt
我想将该文件(不仅仅是输出)复制到在同一命令中创建的新目录中。我已经多次看到这个问题,但没有一个答案有效!我确信答案非常简单,但我似乎无法找到它。
如果我理解正确,您想比较两个目录中的文件并将具有不同内容的文件复制到第三个目录。我看不到只用一个命令就能做到这一点的方法(除非您编写自己的脚本或函数)。但是 bash shell 的优点之一是您可以链接命令,使用一个命令的输出作为下一个命令的输入。
首先,您可以像往常一样使用 diff:
这会给你一个输出
现在,您需要从该输出中提取文件路径。您可以使用许多命令来执行此操作,例如、 、
cut
或grep
其他命令。我将在此示例中使用并从以下位置提取文件:sed
awk
awk
dir2
该管道的输出将类似于
该输出现在可以
xargs
按如下方式提供:请注意,此方法仅适用于两个目录中存在不同文件的情况。如果有一个文件只存在于两个目录之一中,则
diff
s 的输出将不同,这将导致文件名的剪切失败。此外,文件名不得包含任何空格,因为这也会使剪切出错。