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