웹 사이트에서 많은 파일 (~ 10,000)을 다운로드했으며, 대부분은 같은 말을하는 쓸데없는 html입니다. 그러나이 건초 더미에는 유용한 정보가있는 파일이 있으며 (따라서 상당히 다른 파일입니다) 나머지 파일과는 구분하기위한 빠른 방법이 필요합니다. 나는 모든 파일을 하나씩 검토하고 cmp를 사용하여 템플릿과 비교하고 템플릿이 동일한 지 확인하고 삭제할 수 있음을 알고 있습니다. 그러나 이것은 다소 느립니다. 이 작업을 수행하는 더 빠른 방법이 있습니까? 99 % 회복율 만 있다면 괜찮습니다.Bash에서 많은 수의 파일을 빠르게 비교하기
0
A
답변
1
이것은 하나의 인수로 전달 된 트리에서 고유 한 파일을 나열
#!/bin/bash
declare -A uniques
while IFS= read -r file; do
[[ ! "${uniques[${file%% *}]}" ]] && uniques[${file%% *}]="${file##* }"
done< <(find "$1" -type f -exec md5sum -b "{}" \;)
for file in ${uniques[@]}; do
echo "$file"
done
많은 감사를 md5sum이를 사용하여 더 나은 접근 방식 triplee하기!
이전 버전 :
#!/bin/bash
declare -a files uniques
while IFS= read -r -d $'\0' file; do
files[${#files[@]}]="$file"
done< <(find "$1" -type f -print0)
uniques=(${files[@]})
for file in "${files[@]}"; do
for unique in "${!uniques[@]}"; do
[[ "$file" != "${uniques[$unique]}" ]] && cmp -s "$file" "${uniques[$unique]}" && && unset -v uniques[$unique]
done
done
for unique in "${uniques[@]}"; do
echo "$unique"
done
0
가정하면 모든 파일이 현재 디렉토리 또는 그 아래에, 그리고 템플릿은 상위 디렉토리에 있으며, 파일 이름은 공백이 없다 : 당신이 만족하는 경우
find . -type f -print | while read -r filename; do
if ! cmp --quiet $filename ../template; then
echo rm $filename
fi
done
이 "에코"제거를 공장.
관련 문제
- 1. 많은 수의 파일을 처리하는 rubyj
- 2. 많은 수의 파일을 관리하기위한 팁?
- 3. 많은 수의 디렉토리에서 XML 파일에 저장된 데이터를 빠르게 검색하려면 어떻게합니까?
- 4. Bash를 사용하여 많은 수의 문자열을 빠르게 파일에 입력하는 방법
- 5. WPF : 많은 수의 큰 이미지를 빠르게 래퍼 넬에로드하는 방법은 무엇입니까?
- 6. VB.NET의 트 리뷰 컨트롤에 많은 수의 레코드를로드 빠르게
- 7. 많은 수의 파일을 찾기 위해 디렉토리를 찾으십니까?
- 8. 많은 수의 바이너리 파일을 저장하려면 redis를 사용해야합니까?
- 9. 많은 수의 클라이언트에서 파일을 수신하는 Java 서버
- 10. 왜 파이썬 멀티 스레딩과 대기열은 많은 수의 파일을 빠르게 읽는 데 도움이되지 않습니까?
- 11. ada 파일을 프로비저닝하고 많은 수의 오류가있는 ipa 파일을 만듭니다.
- 12. 많은 수의 요소에 많은 수의 자식을 추가하는 동안 JavaScript 성능
- 13. 많은 수의 nhibernate에서 많은 수의 nhibernate로 레코드 되 돌리기?
- 14. 특정 수의 문자 다음에 bash에서 문자열을 분할해야합니다.
- 15. JIRA : 많은 수의 버전
- 16. 많은 수의 샘플 문서
- 17. 많은 수의 NHibernate와 ISession.Close()
- 18. 취급 많은 수의
- 19. MySQL은 많은 수의 쿼리
- 20. 많은 수의 sp_counted_impl_p 개체
- 21. 많은 수의 지퍼를 추출합니다.
- 22. SML 피보나치 많은 수의
- 23. 정밀하고 많은 수의
- 24. 이유는 많은 수의
- 25. MongoDB - 많은 수의 데이터베이스
- 26. 많은 수의 문서 업데이트
- 27. 많은 수의 이미지 미리로드
- 28. 많은 수의 이미지로드
- 29. MongoDB - 많은 수의 문서
- 30. 많은 수의 데이터 패키지 설치
가 명확하게하려면 : 당신이 내용이 모든 파일을 삭제할은 지정된 템플릿 파일의 일치? –
질문에 좀 더 구체적으로 할 수 있습니다. 파일의 대부분이 동일하다는 것을 의미합니까? 즉, 내용이 처음부터 끝까지 바이트 단위로 일치합니까? 아니면 단순히 비슷한 것일까 요? 어떤 파일이 "상당히 다른 파일"이라고 할 때 당신은 무엇을 의미합니까? 내용이 다른가? 파일 형식? 크기? 다른 것? –
예, 일치하는 파일을 삭제하고 싶습니다. 모두 정확하게 동일합니다 (바이트 단위). 다른 파일은 추가 정보를 가지고 있으므로 더 클 것이지만 동일한 파일 유형이됩니다. –