यहाँ इस मुद्दे पर मेरा ले रहा है। यहाँ वर्णित पूर्व लिपियों से बहुत सारे अच्छे विचार आए।
यह ओएस एक्स के लिए एक बैश स्क्रिप्ट है । यह उन फ़ाइलों की तलाश करता है जो एक ही आधार फ़ाइल नाम और dng+jpg
एक्सटेंशन के साथ मौजूद हैं । यदि jpg
कोई ठीक उसी नाम से पाया जाता है dng
, तो वह फ़ाइल नाम प्रदर्शित होता है ( -e
), फ़ाइल ले जाया जाता है ( -m
) या हटा दिया जाता है ( -d
)।
यह सबफ़ोल्डर्स के माध्यम से जाएगा, इसलिए आप इसे अपने संपूर्ण कैटलॉग या इसके कुछ हिस्सों के लिए उपयोग कर सकते हैं।
अन्य कच्ची फ़ाइल एक्सटेंशनों के लिए केवल *.dng
स्क्रिप्ट में आपके पसंदीदा एक्सटेंशन के साथ स्थानापन्न करें।
चेतावनी: आपके पास एक ही नाम के साथ दो अलग-अलग चित्र हो सकते हैं, लेकिन अलग-अलग एक्सटेंशन। वे इस लिपि के अनिवार्य हताहत हैं।
यहां स्क्रिप्ट का उपयोग करने का तरीका बताया गया है:
Usage: dng-jpg.sh [-m <path>] [-d <path>] [-e <path>] [-h]
-m: for move (moves files to <path>/duplicates)
-d: for delete (deletes duplicate files)
-e: for echo (lists duplicate files)
-h: for help
मूल उपयोग इस तरह काम करेगा:
$ ./dng-jpg.sh -e /Volumes/photo/DNG/2015
यह jpg
फाइलों के सभी फ़ाइलनामों को प्रतिध्वनित करेगा जो दोनों होने के मानदंडों से मेल खाते हैं dng
और jpg
एक ही नाम से फाइल करते हैं।
परिणाम कुछ इस तरह दिखाई देगा:
Echo selected with path: /Volumes/photo/DNG/2015
/Volumes/photo/DNG/2015/03/18/2015-03-18_02-11-17.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-10-50.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-10-56.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-11-39.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-11-54.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-12-26.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-12-43.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-13-21.jpg
/Volumes/photo/DNG/2015/06/01/2015-06-01_05-13-56.jpg
9 files found.
अब अगर मैं फ़ाइलों मैं सिर्फ स्विच होगा नष्ट करना चाहते -e
करने के लिए -d
:
$ ./dng-jpg.sh -d /Volumes/photo/DNG/2015
या अगर मैं फ़ाइलों को / डुप्लिकेट में स्थानांतरित करना चाहता / चाहती हूं, तो मैं उसके साथ निष्पादित करूंगा -m
।
$ ./dng-jpg.sh -m /Volumes/photo/DNG/2015
अब डुप्लीकेट jpg
फाइलें अंदर होंगी/Volumes/photo/DNG/2015/duplicates
यहाँ स्क्रिप्ट है: dng-jpg.sh
#!/bin/bash
# Init variables
isSetM=0
isSetD=0
isSetE=0
isSetCount=0
counter=0
#Display usage info
usage() {
cat <<EOF
Usage: dng-jpg.sh [-m <path>] [-d <path>] [-e <path>] [-h]
-m: for move (moves files to <path>/duplicates)
-d: for delete (deletes duplicate files)
-e: for echo (lists duplicate files)
-h: for help
EOF
exit 1
}
#Check for parameters
while getopts ":m:d:e:h" opt; do
case ${opt} in
m)
isSetM=1
let isSetCount="$isSetCount+1"
arg=${OPTARG}
echo "Move selected with path:" $arg
;;
d)
isSetD=1
let isSetCount="$isSetCount+1"
arg=${OPTARG}
echo "Delete selected with path:" $arg
;;
e)
isSetE=1
let isSetCount="$isSetCount+1"
arg=${OPTARG}
echo "Echo selected with path:" $arg
;;
h)
let isSetCount="$isSetCount+1"
usage
;;
\?)
echo "Invalid option: -$OPTARG" >&2
usage
;;
:)
echo "Option -$OPTARG requires a directory argument." >&2
usage
;;
*)
usage
;;
esac
done
# If no parameters, show usage help and exit
if test -z "$1"; then
usage
fi
# If multiple parameters (not counting -a), show usage help and exit
if (($isSetCount > 1)); then
usage
fi
#Verify directory
if [ ! -d "$arg" ]; then
echo "$arg is not a path to a directory." >&2
usage
fi
#Now set it as a basedir
BASEDIR=$arg
WASTEDIR="$BASEDIR/duplicates/"
if (( $isSetM==1 )); then
mkdir $WASTEDIR
fi
for filename in $(find $BASEDIR -name '*.dng' -exec echo {} \; | sort); do
prefix=${filename%.dng}
if [ -e "$prefix.jpg" ]; then
let counter="$counter+1"
if (( $isSetE==1 )); then
echo "$prefix.jpg"
fi
if (( $isSetM==1 )); then
mv $prefix.jpg $WASTEDIR
fi
if (( $isSetD==1 )); then
rm $prefix.jpg
fi
fi
done
echo "$counter files found."