现在,我的代码是这样的:

#!/bin/bash

Dir1=$1
Dir2=$2

for file1 in $Dir1/*; do
    for file2 in $Dir2/*; do
        if [[ $file1 == $file2 ]]; then
            echo "$file1 is contained in both directories"
        fi
    done
done

我试图比较输入的两个目录的文件名,并说如果文件名匹配,则该文件在两个目录中。
当我试着运行它的时候,即使我在两个目录中都有相同的文件,也不会回显任何内容。

最佳答案

Dir1Dir2中的文件:

find "$Dir1/" "$Dir2/" -printf '%P\n' | sort | uniq -d

Dir1中但不在Dir2中的文件:
find "$Dir1/" "$Dir2/" "$Dir2/" -printf '%P\n' | sort | uniq -u

Dir2中但不在Dir1中的文件:
find "$Dir1/" "$Dir1/" "$Dir2/" -printf '%P\n' | sort | uniq -u

关于bash - 如何在Shell脚本中比较两个目录中的文件名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28205735/

10-11 08:42