gpt4 book ai didi

linux - 如何输出两个文件夹中文件的差异并将输出以相同的名称保存在不同的文件夹中

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:22 29 4
gpt4 key购买 nike

我有两个文件名相同但内容不同的文件夹。所以,我试图生成一个脚本来获得差异并查看正在更改的内容。我在下面写了一个脚本:

folder1="/opt/dir1"
folder2=`ls/opt/dir2`

find "$folder1/" /opt/dir2/ -printf '%P\n' | sort | uniq -d

for item in `ls $folder1`
do
if [[ $item == $folder2 ]]; then
diff -r $item $folder2 >> output.txt
fi
done

我相信这个脚本必须工作,但它没有在输出文件夹中给出任何输出。所以所需的输出应该在一个文件中。例如:

cat output.txt

diff -r /opt/folder1/file1 /opt/folder2/file1
1387c1387
< ALL X'25' BY SPACE
---

> ALL X'0A' BY SPACE

diff -r /opt/folder1/file2 /opt/folder2/file2
2591c2591
< ALL X'25' BY SPACE
---
> ALL X'0A' BY SPACE

感谢任何帮助!

最佳答案

好的。所以双重:

  1. 首先获取一个文件夹中的文件。永远不要使用 ls。忘记它的存在。 ls 用于在我们的控制台中进行 pretty-print 。在脚本中,使用 find
  2. 然后为每个文件执行一些命令。一个简单的 while read 循环。

所以:

{
# make find print relative to `/opr/dir1` director
cd /opt/dir1 &&
# Use `%P` so that print without leading `./`
find . -mindepth 1 -type f -print "%P\n"
} |
while IFS= read -r file; do
diff /opt/dir1/"$file" /opt/dir2/"$file" >> output/"$file"
done

注意事项:

关于linux - 如何输出两个文件夹中文件的差异并将输出以相同的名称保存在不同的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242668/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com