스크립트는 파일 이름을 반복하기 위해 md5sum을 추가하지만 실행 시 여전히 오류 알림을 받습니다.

스크립트는 파일 이름을 반복하기 위해 md5sum을 추가하지만 실행 시 여전히 오류 알림을 받습니다.

그래서 이 사이트의 다른 스레드에서 얻은 일부 정보를 사용하여 파일을 다른 디렉터리에 복사한 다음 중복된 파일 이름에 md5sum을 추가하는 스크립트를 얻었습니다. 그러나 스크립트를 실행할 때 이해/해결에 도움이 될 수 있는 BASH 알림이 계속 표시되기 때문에 완전히 만족스럽지는 않습니다. 먼저 스크립트가 있습니다.

cp -r $dir1/* $dir2

cd $dir2  

fdupes -r $dir2 | while read i; do

bn="${i%.*}"
ext="${i##*.}"
md5=$(md5sum "$i" | awk '{ print $1 }')

mv -v "$i" "${bn}_${md5}.${ext}"

done 

스크립트가 실행될 때 받는 메시지는 다음과 같습니다.

md5sum: : No such file or directory
mv: cannot stat ‘’: No such file or directory

내가 말했듯이 스크립트는 작동하는 것 같지만 이러한 메시지가 나타나는 이유에 대한 아이디어와 스크립트 조정/개선에 대한 제안도 감사하겠습니다. 감사해요

답변1

fdupes내가 이해한 바에 따르면 명령 끝에 빈 줄이 출력되는 명령에 문제가 있는 것 같습니다 .

[PRD][]localhost:~ 12:17:09     
$ fdupes -r work/
work/sockperf-sockperf_v2/news          
work/sockperf-sockperf_v2/src/.dirstamp
work/sockperf-sockperf_v2/src/.deps/.dirstamp

[PRD][]localhost:~ 12:17:19

그런 다음 루프에서 처리할 때 마지막 요소가 비어 있어 md5sum파일이 없으면 오류가 발생합니다.

$ md5sum ' ' 
md5sum: : no such file of directory 

그런 다음 스크립트는 이 빈 이름 파일을 이동하려고 시도하며 이 경우에도 오류가 발생합니다 mv.

관련 정보