디렉토리에 있는 파일 간의 차이점

디렉토리에 있는 파일 간의 차이점

파일은 동일하지만 내용이 다른 두 개의 디렉토리가 있습니다. 나는 그 다른 파일들을 나열하고 싶습니다. 예를 들어

File1, file2, file3 등의 파일을 포함하는 두 개의 폴더 Folder1과 Folder2가 있습니다. 폴더 1의 파일 2는 폴더 2의 파일 2와 유사하지 않습니다.

따라서 내 명령은 file2를 나열해야 합니다.

어떻게 해야 하나요?

답변1

디렉토리를 다음과 비교할 수 있습니다 diff.

$ diff -qr dirA dirB
Only in dirB: file.txt
Files dirA/README and dirB/README differ

답변2

나는 이 목적을 위한 특별한 도구가 있다고 확신하며( fdupes나는 그것을 생각했습니다) 다음 간단한 스크립트가 작업을 수행해야 합니다.

#!/usr/bin/env sh

if [ "a$1" = a -o "a$2" = a ]
then
    echo Directory name missing.
    echo Exiting
    exit 1
fi

for i in "$1"/*
do
    filename=$(basename "$i")
    diff "${1}/${filename}" "${2}/${filename}" > /dev/null 2>&1
    if [ "$?" -eq 1 ]
    then
    echo "$filename" is different
    fi
done

exit 0

diff바이너리가 있어야 합니다 $PATH(아마도 가지고 있을 것입니다). 용법:

$ ./diff.sh  Folder1 Folder2
7 is different
file2 is different

답변3

해결 방법 1: 거기에 가서 볼 수 있습니다:https://askubuntu.com/questions/111495/how-to-diff-multiple-files-across-directories, 특히 Rinzwind의 답변은 직접 할 수 있다고 규정합니다 diff -qr Folder1 Folder2.

다른 솔루션은 결과를 병합하려는 경우에만 유용합니다.

해결 방법 2: GUI 애플리케이션을 실행할 수 있는 경우 가장 좋은 솔루션은 다음을 사용하는 것입니다.퓨전또는kdiff3.

해결 방법 3: 또 다른 해결책은 버전 제어 소프트웨어를 사용하는 것입니다. 예를 들어, git을 사용하면 다음을 수행할 수 있습니다.

$ cd Folder1
$ git init
$ git add .
$ git commit -m "First commit"
$ rm -rf *
$ cp -r /PATH/TO/Folder2/* ./

git status그런 다음 또는 를 사용하여 git diff차이점을 확인할 수 있습니다 . 이 솔루션의 경우 먼저 백업을 만드는 것이 좋습니다. rm -rf *도트 파일을 삭제하지 않도록 주의하세요 .

해결 방법 4: 마지막으로 이 플러그인을 살펴보세요 vim(아직 시도해 보지 않았습니다).https://github.com/will133/vim-dirdiff. 에 대한 플러그인도 존재한다고 확신합니다 Emacs.

관련 정보