폴더 내 특정 확장자 및 이름을 가진 파일들이 같은 파일인지 아닌지 확인이 필요했다. 파일을 하나하나 다 찾아서 md5sum 으로 checksum 확인하여 무결성 여부를 확인하기엔 너무 시간이 오래 걸렸다. 여기저기 찾아본 결과 아래 명령어와 같이 md5sum 명령어와 find 명령어 조합으로 파일 동일 여부를 확인할 수 있었다.
1. find 결과 값을 xargs 와 md5sum 조합하여 확인하는 방법
sudo find ./ -maxdepth 3 -name "*.txt" -print0 | sort -z | xargs -r0 md5sum 결과 : ae35fa407b6b1fa855fa0ad93d7c72bf ./A/A_1/test.txt ae35fa407b6b1fa855fa0ad93d7c72bf ./A/test.txt ae35fa407b6b1fa855fa0ad93d7c72bf ./test.txt |
명령어 설명 :
sudo | 최고 관리자 권한으로 실행 |
find ./ | 현재 위치 ./ 에서 찾기 시작 |
-maxdepth 3 | 현재 위치를 maxdepth 1로 보고, 3 번째 하위 폴더까지 검색한다 |
-name *.txt | 확장자가 txt 인 모든 파일 검색 |
-print0 | 각각의 파일 검색 결과를 newline(개행) 없이 한줄로 보여준다. |
sort -z | GNU 환경에서 -print0 옵션 대신 사용 가능한 명령어 |
xargs -r0 md5sum | 각각의 결과를 md5sum 명령어 수행한다. -r(--no-run-if-empty) : 입력값이 비어있으면 수행하지 않는다. -0(--null) : 파일 이름은 null character로 끝나도록 인식한다. |
2. find 결과 값을 backtick(`) 을 사용하여 md5sum 확인 하는 방법
md5sum `sudo find ./ -maxdepth 3 -name "*.txt"` 결과 : ae35fa407b6b1fa855fa0ad93d7c72bf ./test.txt ae35fa407b6b1fa855fa0ad93d7c72bf ./A/A_1/test.txt ae35fa407b6b1fa855fa0ad93d7c72bf ./A/test.txt |
명령어 설명 :
md5sum | Backtick으로 감싸진 find 명령 결과를 변수로 출력 받아 md5sum 를 수행한다. |
Backtick ( ` ) | ` ` 안에 명령어를 수행 후 출력한다. |
<참고 자료>
https://unix.stackexchange.com/questions/34325/sorting-the-output-of-find-print0-by-piping-to-the-sort-command
https://ss64.com/bash/sort.html
https://www.gnu.org/software/findutils/manual/html_node/find_html/xargs-options.html
'Programming > C++' 카테고리의 다른 글
[ubuntu] 실행파일 있는데 없다고 에러 메시지 발생 (No such file or directory) (0) | 2022.12.02 |
---|---|
ubuntu 하위 폴더 내 모든 파일 사이즈 출력하고 정렬하는 방법 (0) | 2022.11.27 |
ubuntu 서버에 새로운 계정 추가하기. 계정 추가 후 로그인 안될 때 (0) | 2022.11.19 |
bash shell 스크립트 정규식 url 날짜 정보 추출 url 파일 다운 받기 (0) | 2022.11.19 |
linux diff 명령어 no such file or directory 해결 방법 (0) | 2022.03.05 |
댓글