동일한 디렉토리의 중복 파일을 비교하고 함께 하드 링크하는 방법

동일한 디렉토리의 중복 파일을 비교하고 함께 하드 링크하는 방법

특정 디렉토리에서 발견된 중복 파일을 나타내는 변수가 있습니다.

ddub=`find $1* -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} find -type f -size {}c -print0 `

그런 다음 디렉터리를 반복하여 원본 파일과 중복된 하드 링크를 비교합니다.

echo $ddub                              #Print the results

for i in $ddub; do
    for j in $ddub ; do
    if cmp -s "$i" "j" ; then
         ln $i $j
    elif ; 
         echo "csnt hardlink the files"
    fi

여기서 문제는 목록에 있는 모든 파일을 하드 링크하려고 시도하지만 원하는 대로 작동하지 않는다는 것입니다. 고유한 파일을 나머지 파일과 분리한 다음 하드 링크하고 싶습니다.

목록에서 발견된 유사한 MD5sum 파일 또는 동일한 크기의 파일만 하드 링크하도록 추가 루프를 수행하려면 어떻게 해야 합니까?

내가 얻은 결과는 아래와 같습니다. 이는 내가 만든 모든 파일의 목록입니다. 이들을 더 분리하는 방법을 알아내도록 도와주세요. (저는 방금 임의의 파일을 생성했습니다.)

ln ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy
[asonganyif@ccad2 November_2016]$ vim bashScripass.sh

답변1

[ a = b ]다음을 사용하여 파일을 결합할 수 없습니다 cmp.

if cmp -s "$i" "$j"; then
# rest as you were

관련 정보