홈 디렉터리의 하위 디렉터리에 있는 모든 중복 파일을 제거합니다.

홈 디렉터리의 하위 디렉터리에 있는 모든 중복 파일을 제거합니다.

저는 Linux를 처음 사용하는데 동일한 파일 이름을 가진 모든 중복 항목을 제거하고 원본 파일은 하나만 유지하는 방법을 알고 싶습니다.

예를 들어 다음이 있습니다.

dir_new_001 = rdt.txt
dir_new_002 = rdt.txt
dir_new_003 = rdt.txt

명령줄에서 이 작업을 수행하고 싶습니다.

답변1

이제 이 작업에 대한 나의 이해를 설명하겠습니다.

3개의 열이 있는 행을 포함하는 텍스트 파일 "file.txt"가 있습니다.

directory = file

동일한 이름의 파일이 다른 디렉토리에 있을 수 있으므로 동일한 이름의 파일을 한 번만 유지하고 나머지는 삭제하는 행을 생성해야 합니다. 옳은?

입력 파일 "file.txt":

dir_new_001 = rdt.txt
dir_new_002 = rdt.txt
dir_new_003 = rdt.txt

dir_new_001 = rdt2.txt
dir_new_002 = rdt2.txt

dir_new_001 = rdt3.txt
dir_new_003 = rdt3.txt

실행할 코드 한 줄(/bin/sh 또는 /bin/bash 사용):

for i in $(cat file.txt|awk '{print $3}'|sort|uniq); do F=$(grep " = $i$" file.txt|tail -n+2|awk '{print $1"/"$3}'|xargs); [ -n "${F}" ] && echo "rm -f ${F}"; done|sort

결과:

rm -f dir_new_002/rdt2.txt
rm -f dir_new_002/rdt.txt dir_new_003/rdt.txt
rm -f dir_new_003/rdt3.txt

파일을 삭제하려면 "echo"를 사용하는 대신 언제든지 "rm"을 사용하여 인쇄할 수 있습니다.

답변2

유틸리티 에 대한 액세스 권한이 있는 경우 fdupes다음 명령을 실행하십시오.

$ fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)

바라보다fdupes – Linux에서 중복 파일을 찾아 삭제하는 명령줄 도구자세한 내용은.

관련 정보