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
你是說它可以在交互式shell中運行,但是當從Geany中調用時不行嗎?你有沒有檢查過哪個工作目錄和參數Geany調用它? (還有,如果你可以使用'fdupes')。 –
您可能打算在第33行寫上'path =「$ 2/$ file」'。 –
您也可以使用http://www.shellcheck.net/來檢查常見錯誤。 –