0
이것은 내 최초의 bash 스크립트이며 모든 주름을 제거하고 스크립트를 멋지게 실행하려고합니다. 스크립트는 HDD/플래시 드라이브의 여러 디렉토리에서 찾은 지정된 .jpg 파일을 모두 아카이브하는 것입니다. 이름이 같지만 내용이 다른 파일이 있으므로 Md5 합계를 사용하여 해시했습니다.Md5 이미지를 식별하고 보관하기위한 해시
Geany에 디렉토리가 존재하지 않지만 오류가 발생했지만 두 개의 이미지가 누락 된 명령 행에서 정상적으로 실행됩니다. 나는 그것을 고칠 생각이있는 모든 것을 시도했다. 이 일을하는 지저분한 코드입니까?
#!/bin/sh
if [ ! -d "$1" ]; then
echo Directory "$1" cannot be found. Please try again.
exit
fi
if [ $# -eq 1 ]; then
echo "usage: Phar image_path archive_path"
exit
fi
if [ -d "$2" ]; then
echo "archive exists"
else
echo "the directory 'archive' does't exist. Creating directory 'archive'."
mkdir -p ~/archive
fi
find $1 -iname "IMG_[0-9][0-9][0-9][0-9].JPG" | cat > list.txt
[ -f ~/my-documents/md5.txt ] && rm md5.txt || break
while read line;
do md5sum $line | xargs >> md5.txt
done < list.txt
sort -k 1,1 -u md5.txt | cat > uniquemd5.txt
cut -d " " -f 2- uniquemd5.txt > uniquelist.txt
sort uniquelist.txt -r -o uniquelist.txt
for line in $(cat uniquelist.txt)
do
file=$(basename $line) path="$2/file"
if [ ! -f $path ];
then
cp $line $2
else
cp $line $path.JPG
fi
done
Geany에서 호출 할 때 대화 형 쉘에서 작동한다고 말하는가? Geany가 어떤 작업 디렉토리와 인수를 호출했는지 확인 했습니까? (또한 fdupes 만 사용할 수 있다면). –
아마도 33 행에'path = "$ 2/$ file"'을 써야 할 것입니다. –
또한 http://www.shellcheck.net/을 사용하여 일반적인 실수를 확인할 수 있습니다. –