Last active
October 17, 2023 17:11
-
-
Save on0z/8ef511d808d1a1b790d89a9010250062 to your computer and use it in GitHub Desktop.
importFromSonyAlpha ソニー製カメラαから,写真と動画を整理して取り出すスクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
function find_folder_start_with () { | |
# 検索対象のフォルダのPrefix | |
START_WITH=$1 | |
# 検索対象のフォルダが持つファイル (Optional) | |
SPECIFIC_FILE_NAME=$2 | |
# SPECIFIC_FILEがいずれかのフォルダに存在するか確認 | |
RES=$(find ./$1* -name "$2" 2>/dev/null) | |
if [ $? -ne 0 ]; then | |
# 予期せぬエラーの場合 | |
: | |
elif [ -z "$RES" ]; then | |
# 存在しない場合 | |
: | |
else | |
# 存在する場合 | |
echo "$(echo "${RES%/*}" | head -n 1)" | |
return | |
fi | |
# START_WITHから始まるフォルダを探索 | |
RES=`find . -maxdepth 1 -type d -name "$1*" 2>/dev/null` | |
if [ $? -ne 0 ]; then | |
# 予期せぬエラーの場合 | |
echo "$1" | |
elif [ -z "$RES" ]; then | |
# 存在しない場合 | |
echo "$1" | |
else | |
# 存在する場合 | |
echo "$(echo "$RES" | tail -n 1)" | |
fi | |
} | |
SCRIPT_DIR=$(cd $(dirname "$0") && pwd) | |
cd "${SCRIPT_DIR}" | |
FROM="/Volumes/Untitled" | |
FROM=${FROM%/} | |
if [ ! -d ${FROM} ]; then | |
echo SDカードないで | |
exit 1 | |
fi | |
echo 出力先: ${SCRIPT_DIR} | |
# 写真 | |
echo 写真をMacに取り込む | |
FROM_IMG="${FROM}/DCIM" | |
# SDカードの空フォルダを削除 | |
find "${FROM_IMG}" -type d -empty -exec rmdir {} \; -prune | |
# フォルダー名(DIRNAME)が、フォルダー番号(3桁)+年月日(西暦下1桁月日4桁)になる。例:10010405(100フォルダー、2021年4月5日) | |
for DIRNAME in $(ls "${FROM_IMG}"); | |
do | |
if [[ ! ${DIRNAME} =~ [0-9]{8} ]]; then continue; fi | |
dirpath="${FROM_IMG}/${DIRNAME}" | |
IMG_DATE=${DIRNAME:3} # 00405 | |
YEAR=$(date "+%Y") | |
# 写真の日時がxxx9年で、今年がxxx9年ではない場合、多くの場合去年の写真であると推測されるので、YEARから10を引く | |
if [ ${IMG_DATE:0:1} = "9" ] && [ ! ${YEAR:3:1} = "9" ]; then YEAR=$((${YEAR} - 10)); fi | |
FOLDER_PREFIX="${YEAR:0:3}${IMG_DATE} ${DIRNAME:0:3}" | |
echo ${DIRNAME}フォルダの写真を取り込む | |
for FILENAME in $(ls "${dirpath}"); | |
do | |
DIST_FOLDER_NAME=$(find_folder_start_with "${FOLDER_PREFIX}" "${FILENAME}") | |
mkdir -p "${DIST_FOLDER_NAME}" | |
# 実行内容表示 パーミッションと所有者とタイムスタンプを保持 上書きしない | |
cp -vpn "${dirpath}/${FILENAME}" "${DIST_FOLDER_NAME}" | |
done | |
done | |
# 動画 | |
# ファイル名が、日付+タイトル+ファイル番号になる。 | |
echo 動画を取り込む | |
FROM_MOV="${FROM}/private/M4ROOT/CLIP" | |
for filepath in $(ls ${FROM_MOV}/*.MP4); | |
do | |
FILENAME=${filepath##*/} | |
MOV_DATE=${FILENAME%%_*} | |
MOV_TITLE=${FILENAME##*_} | |
DIST_FOLDER_NAME=$(find_folder_start_with "${MOV_DATE}" "${MOV_TITLE}") | |
mkdir -p "${DIST_FOLDER_NAME}" | |
cp -vpn "${filepath}" "${DIST_FOLDER_NAME}/${MOV_TITLE}" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment