사용된 sed 명령 분석

사용된 sed 명령 분석

md5sum일부 복사된 파일의 유효성을 검사하는 데 약간의 어려움이 있습니다 .

두 개의 디렉토리 가 있습니다: dir1dir2. 그 안에는 , 및 dir15개의 파일이 있습니다 .file1file2file3file4file5dir2

만약 내가한다면: cp dir1/* dir2,

그 다음에: md5sum dir1/* > checksums,

그 다음에: md5sum -c checksums,

결과 :

dir1/file1: OK
dir1/file2: OK
dir1/file3: OK
dir1/file4: OK
dir1/file5: OK

그러나 그것은 좋지 않습니다. 텍스트 파일의 체크섬을 dir2에 복사된 파일의 체크섬과 비교하고 싶습니다.

답변1

노력하다:

$ (cd dir1 && md5sum *) > checksums
$ cd dir2
$ md5sum -c ../checksums

checksums내용은 다음과 같습니다.

d41d8cd98f00b204e9800998ecf8427e  file1
................................  file2
................................  file3
................................  file4
................................  file5

답변2

이것을 시도해 볼 수 있습니다

#Create your md5 file based on a path - recursively
pathtocheck=INSERTYOURPATHHERE
find $pathtocheck -type f -print0 | xargs -0 md5sum >> xdirfiles.md5

#Compare All Files
md5results=$(md5sum -c xdirfiles.md5)

#Find files failing Integrity Check
echo "$md5results" | grep -v OK

#Count the files good or bad.
lines=0
goodfiles=0
badfiles=0
while read -r line;
do
  lines=$(($lines + 1))
  if [[ $line == *"OK"* ]]; then
    goodfiles=$(($goodfiles + 1))
  else
    badfiles=$(($badfiles + 1))
  fi
done <<< "$md5results"
echo "Total Files:$lines Good:$goodfiles - Bad: $badfiles"

그것은 당신 자신의 게임입니다... dir2를 확인하는 방법에 대한 질문에 대한 직접적인 대답입니다... sed를 사용하는 모든 파일 앞에 /dir2/를 강제로 적용하면 됩니다. 검사 파일의 절대 경로를 제공합니다.

sed -I "s/  /  \/dir2\//g" xdirfiles.md5

[root@server testdir]# md5sum somefile
d41d8cd98f00b204e9800998ecf8427e  somefile
[root@server testdir]# md5sum somefile > somefile.md5
[root@server testdir]# sed -i "s/  /  \/dir2\//g" somefile.md5
d41d8cd98f00b204e9800998ecf8427e  /dir2/somefile

사용된 sed 명령 분석

sed -i <- Inline replacement.
s/ <- Means to substitute. (s/thingtoreplace/replacewiththis/1)
"  " <- represented a double space search.
/ <- to begin the Replacement String values
"  \/dir2\/" <-  Double Spaces and \ for escape characters to use /. The
final /g means global replacement or ALL occurrences. 
/g <- Means to replace globally - All findings in the file. In this case, the md5 checksum file seperates the hashes with filenames using a doublespace. If you used /# as a number you would only replace the number of occurrences specified.

답변3

가장 기본적인 작업 형태는 다음을 실행하여 체크섬 파일의 복사본을 생성하는 것입니다.

md5sum Dir1/* 

복사 완료의 효율성을 테스트하려는 디렉터리로 변경합니다. (백업이나 유사한 작업을 하면서 동시에 다른 파일을 복사하는 경우에는 별도로 할 필요가 없습니다.)

cp checksum Dir2/checksum
cd Dir2

두 번째 디렉터리로 변경하면 명령이 더 간단해지며, 누락된 파일을 처리해야 하는 경우 터미널에서 작동하는 파일(및 해당 명령 기록)에 대한 올바른 경로를 확보하는 데 도움이 됩니다. 그렇지 않은 경우에는 복사하여 붙여넣으세요. 나중에 명령줄에 입력하세요.

md5sum -c checksum 

사본의 완전성을 제공하십시오.

관련 정보