0
我有一个shell脚本在本地拷贝一个S3 bucket(aws)的文件,然后将它复制到另一个地方(由于授权,它不能直接执行),但是想法是这个图像可能在某个文件夹中,并且shell正在本地创建它,但它只是删除图像,并且我发现执行后我有一些空文件夹。所以我的问题是如何删除文件夹,如果它存在于名称中?如何在shell中删除文件及其文件夹?
该副本并删除我的壳部分:
aws s3 cp s3://$SRC_BUCKET/$PHOTO_NAME $PHOTO_NAME --profile $SRC_PROFILE
# copy to other place
rm $PHOTO_NAME # here PHOTO_NAME may have the parent folder in it (a.jpg,
# or b/a.jpg) and I would like to delete the b folder too
我已经更新了我的代码的基础上,下面的答案,但它似乎没有做什么预期:创建的临时目录,但一切都在它之外做...我的代码如下所示:
dir="$(mktemp aws-sync-XXXXX)"
pushd "$dir"
COUNT=1
until [ $COUNT -gt $MAX_COUNT ]; do
aws s3 cp s3://$SRC_BUCKET/$PHOTO_NAME $PHOTO_NAME --profile $SRC_PROFILE
# copy to other place
rm $PHOTO_NAME
((MESSAGES_COUNT+=1))
fi
done
popd
rm -rf "$dir"
'do stuff'意思是我的线?你是对的:如果该文件夹已经存在,该怎么办?我想它不会再创建它,只需将图像保存在里面...但是您的方法很有趣 – sop
没问题,但是如果我不想同步s3,该怎么办?我只是想复制一些文件 – sop
你的意思是“不同步到S3而只是复制一些文件”?我提议的不是特定于S3:它适用于在当前目录中创建垃圾的任何命令。你通过在新目录中运行它,完成你的工作,然后删除整个目录来清理它。 – hraban