0

次のスクリプト ( Source )を使用して、Cocoa アプリの一部のリソースを暗号化しています。

DIRNAME=EncryptedResources
ENC_KEY="abcdefghijklmnopqrstuvwxyz123456"

INDIR=$PROJECT_DIR/$DIRNAME
OUTDIR=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH/$DIRNAME

if [ ! -d "$OUTDIR" ]; then
  mkdir -p "$OUTDIR"
fi

for file in "$INDIR"/*
do
  echo "Encrypting $file"
  "$PROJECT_DIR/crypt" -e -k $ENC_KEY -i "$file" -o "$OUTDIR/`basename "$file"`"
done

ただし、スクリプトは EncryptedResources ディレクトリ内のサブディレクトリを処理しません。ネストされたサブディレクトリがいくつかあるため、シェルスクリプトを変更してサブディレクトリを処理し、それらを正しく出力する最も簡単な方法は何でしょうか。

4

2 に答える 2

1

ループfindの代わりにコマンドを使用する必要があります。for

find $INDIR -exec "$PROJECT_DIR/crypt" 
    -e -k $ENC_KEY -i {} -o "$OUTDIR/`basename {}`" \; # all on one line

あなたがする必要があることの良い概算かもしれませんが、find使用するのは非常に難しく、私はメモリから作業しています.

于 2013-04-22T02:59:52.200 に答える
0

参考までに、私は以下を使用しました:

DIRNAME=ENCRYPTEDCONTENT
ENC_KEY="INSERT ENCRYPTION KEY HERE"

INDIR=$PROJECT_DIR/$DIRNAME
OUTDIR=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH/Resources/$DIRNAME

if [ ! -d "$OUTDIR" ]; then
mkdir -p "$OUTDIR"
fi


while IFS= read -r -d $'\0' dir;
do
DIRECTORY=`echo $dir | sed -e "s,$INDIR,$OUTDIR,g"`
mkdir -p "$DIRECTORY"
done < <(find "$INDIR" -type d -print0)

while IFS= read -r -d $'\0' file;
do
OUTFILE=`echo $file | sed -e "s,$INDIR,$OUTDIR,g"`
if [ ! -d "$file" ]; then
echo "Encrypting $file"
"$PROJECT_DIR/crypt" -e -k $ENC_KEY -i "$file" -o "$OUTFILE"
fi
done < <(find "$INDIR" -type f -print0)
于 2013-06-16T08:23:41.277 に答える