0

下面是我正在为媒体备份编写的脚本片段。当从终端命令行调用时,脚本会按预期运行。但是,在使用 Platypus 将脚本包装到应用程序后,会创建目标目录,但不会运行 For 循环,并且不会将媒体复制到目标文件夹。有人知道我在这里做错了什么吗?

#!/bin/sh

DEST_PATH=/Volumes/MediaBackup   
mkdir -p $DEST_PATH    
SAVEIFS=$IFS

IFS=$(echo -en "\n\b")

for i in $(find "$PWD" -iname "*.jpg")    
do      
    FILENAME="$(basename $i)"
    MD5="$(md5 -q $i)"
    cp "$i" "$DEST_PATH/$MD5-$FILENAME"
done 

IFS=$SAVEIFS

温柔的男人和/或女士们,谢谢!以下是使用您的评论的工作脚本。感谢您快速转身。前几天应该做的。

#!/bin/bash

DEST_PATH=/Volumes/PrivateMain/Media
mkdir -p $DEST_PATH
SAVEIFS=$IFS

IFS=$(printf "\n\b")

for i in $(find "/Users" -iname "*.jpg") 
do
FILENAME="$(basename $i)"
MD5="$(md5 -q $i)"

cp "$i" "$DEST_PATH/$MD5-$FILENAME"

done 

IFS=$SAVEIFS
4

1 回答 1

0
#!/bin/bash

DEST_PATH=/Volumes/PrivateMain/Media
mkdir -p $DEST_PATH
SAVEIFS=$IFS

IFS=$(printf "\n\b")

for i in $(find "/Users" -iname "*.jpg") 
do
FILENAME="$(basename $i)"
MD5="$(md5 -q $i)"

cp "$i" "$DEST_PATH/$MD5-$FILENAME"

done 

IFS=$SAVEIFS

感谢所有帮助过的人!但是,由于可能覆盖 2 个同名文件,我将脚本编辑为如下。

SAVEIFS=$IFS
IFS=$(printf "\n\b")
COUNTER=0;
for i in $(find "/Users" -iname "*.jpg");
do

BASE=`expr "$i" : '.*/\(.*\)\..*'`;
EXT=`expr "$i" : '.*/.*\.\(.*\)'`;
COUNTER=`expr $COUNTER + 1` ;
cp "$i" ""${tardir}"/"$x"/JPG/"$BASE"_"$COUNTER"."$EXT""

done
IFS=$SAVEIFS        
于 2017-02-10T20:55:04.637 回答