EXIF চিত্র ডেটা দ্বারা চিত্রগুলি কীভাবে সংগঠিত / সাজানো যায়


9

আমি একটি হারিয়ে যাওয়া পার্টিশন থেকে চিত্রগুলি পুনরুদ্ধার করেছি এবং প্রতিটি চিত্রের এক্সআইএফ ডেটাতে আমি সেগুলি বাছাই করতে বা তৈরির তারিখ অনুসারে একটি ফোল্ডারে রেখে দিতে চাই।

আমি ডিজিकाम এবং শটওয়েলও ইনস্টল করেছি তবে বিকল্পগুলির কোনওটিতে এটি করার উপায় খুঁজে পাইনি।

কেউ কি আমাকে ব্যাখ্যা করতে পারেন যে কীভাবে এই প্রোগ্রামগুলির সাথে বা অন্য কোনও পদ্ধতিতে এটি করা যায়?

উত্তর:


14

আমার প্রিয় সমাধানটি হল ফাইলের তারিখটি এক্সিফ ফটো তারিখের মতোই সেট করা। এটি করে আপনি কোনও ফাইল এক্সপ্লোরার সরঞ্জাম ব্যবহার করে ফাইলগুলি বাছাই করতে পারেন।

  1. জেহেড ইনস্টল করুন ( apt-get install jhead)
  2. ফটো ডিরেক্টরিতে যান এবং এই আদেশটি চালান jhead -ft *। এটি এক্সিফ মেটাডেটার তৈরির তারিখ সহ ফাইল সিস্টেমে ফাইলের তারিখ সেট করবে
  3. এখন কেবল উপরের মেনুতে যান (উবুন্টুতে আপনি মনিটরের পর্দার শীর্ষে মাউসটি নিয়ে যান), দেখুন → চিত্রগুলি বাছাই করুন Date তারিখ অনুসারে।

তারিখ অনুসারে চিত্রগুলি বাছাই করুন ফাইলগুলি সেগুলি তৈরি বা সংশোধিত হওয়ার তারিখের সাথে অর্ডার করবে। আপনি যদি সবেমাত্র অনেকগুলি ফাইল পুনরুদ্ধার করেন তবে সেগুলির সমস্ত একই তারিখে চলেছে। আমার বোঝার জন্য এক্সআইএফ মেটাডেটা ফাইলের মধ্যে রয়েছে এবং অগত্যা ফাইলটির তারিখের সাথে মেলে না
মরিসিও গ্রাসিয়া গুতেরেজ

7

আমি এক্সিফ্টোল ব্যবহার করার পরামর্শ দিচ্ছি । আপনি এটি দিয়ে ইনস্টল করতে পারেন

sudo apt install exiftool

এখানে একটি নমুনা কমান্ড যা ওয়াইওয়াইওয়াইএমএমডিডি ফর্ম্যাটে তৈরির তারিখের ভিত্তিতে ফাইলগুলির নাম পরিবর্তন করে এবং শেষে একটি সিকোয়েন্স নম্বর সংযোজন করে।

exiftool '-filename<CreateDate' -d %Y%m%d%%-.4nc.%%le -r

এবং এখানে একটি নমুনা কমান্ড রয়েছে যা image.jpg'YYYY-MM-DD' ফর্ম্যাটে এটির নাম হিসাবে এটি তৈরির তারিখ সহ ডিরেক্টরিতে চলে যায়।

exiftool -d %Y-%m-%d "-directory<datetimeoriginal" image.jpg

ডকুমেন্টেশনে আরও নমুনা কমান্ড রয়েছে: https://sno.phy.queensu.ca/~phil/exiftool/filename.html


চিত্রগুলি যেখানে রয়েছে সেই ফোল্ডারে আমি কি এই আদেশটি চালাতে পারি? আমি কি এটি উবুন্টুর অধীনে একটি এনটিএফএস মাউন্ট করা পার্টিশনে চালাতে পারি?
মৌরিসিও গ্রাসিয়া গুতেরেজ

2
সতর্কবার্তাটির বাধ্যবাধক শব্দ - এই ফটোগুলির একমাত্র অনুলিপিটিতে এটি ব্যবহার করে দেখুন না - প্রথমে একটি ব্যাকআপ কপি তৈরি করুন যাতে আপনি যদি এটি চালিয়ে যান তবে আপনি আবার শুরু করতে পারেন। এটি আপনার প্রশ্নগুলি সম্পর্কে বলেছিল: হ্যাঁ, এবং আমিও তাই বলেছি। উদাহরণস্বরূপ, যদি আপনার কাজের অনুলিপিগুলি / হোম / আমার / ছবি / মঞ্চে সংরক্ষণ করা হয় তবে আপনি cd /home/me/Pictures/stagingপ্রথমে তা করতে পারেন , তারপরে এক্সেফটোল আহ্বান করবেন।
স্কট

একই কমান্ড লাইন এমএস উইন্ডোজ জন্য কাজ করবে?
মরিসিও গ্রাসিয়া গুতেরেস

লেখকের ওয়েবসাইটে বিবরণ পড়ার ভিত্তিতে, আমি তাই বিশ্বাস করি: "এক্সিফটুল একটি প্ল্যাটফর্ম-স্বতন্ত্র পার্ল গ্রন্থাগার এবং বিভিন্ন ধরণের ফাইলগুলিতে মেটা তথ্য পড়ার, লেখার এবং সম্পাদনা করার জন্য একটি কমান্ড-লাইন অ্যাপ্লিকেশন" " উইন্ডোজের কমান্ড প্রম্পট থেকে এটি আহ্বান করার আগে আপনাকে বিশেষ কিছু করতে হবে (এটি "উইন্ডোজ এক্সিকিউটেবল" যেখানে বলা হয়েছে তার অধীনে দেখুন) তবে আমি একবার আশা করি আপনি একবারে সমস্ত প্ল্যাটফর্মে সমস্ত কমান্ড এবং প্যারামিটার একই হয়ে যাবে would যে বিন্দু পেতে।
স্কট

1

একটি দুর্দান্ত সরঞ্জাম হ'ল র‌্যাপিড ফটো ডাউনলোডার

  1. পিপিএ যুক্ত করা হচ্ছে

    sudo apt-add-repository ppa:dlynch3/ppa
    
  2. আপডেট এবং ইনস্টল করা হচ্ছে

    sudo apt-get update
    sudo apt-get install rapid-photo-downloader
    

আপনার "হারানো বিভাজন" ইনপুট উত্স হিসাবে ব্যবহার করুন এবং র‌্যাপিড ফটো ডাউনলোডারে আপনার এক্সিফ ডেটার উপর ভিত্তি করে লক্ষ্য পথ / ফাইলের নামগুলি কনফিগার করুন


পিপিএ আর রক্ষণাবেক্ষণ করা হয় না। এটি যুক্ত করার চেষ্টা করে এই বার্তাটি পেয়েছে: এই পিপিএ এখন পুরানো। র‌্যাপিড ফটো ডাউনলোডারের সর্বশেষতম সংস্করণটির জন্য, দামোনলিঞ্চ.net
কোরি এস

1

ফ্যাচ ফটো ব্যাচ প্রসেসর ইনস্টল করুন। পূর্বনির্ধারিত ক্রিয়াগুলি থেকে, এক্সিফ থেকে তারিখের সাথে ফাইলগুলির নাম পরিবর্তন করে এমন একটি নির্বাচন করুন।


1

সহজ ব্যবহার: jhead -n%Y/%m/%d/%Y%m%d%H%M /Destination/*.jpg

এটি আপনার সমস্ত জেপিজির বর্তমান ডিরেক্টরি থেকে দুর্দান্ত ডিরেক্টরি কাঠামোয় অনন্য ফাইল নেম / ইয়ার/মনেথ / ডে / ইয়ারমোনথডেহ্যোরমিনিউট.জেপজি সহ নতুন ডিরেক্টরিটিকে সরিয়ে আনা এবং নামকরণ করবে

এটি কেবল * .jpg ফাইলের ময়দার উপর কাজ করে, RAW এর নয়


দ্রষ্টব্য: এটি পথ থেকে ফাইলগুলি নেবে যা কমান্ড লাইনের শেষে নির্দিষ্ট করা হয়েছে : jhead -n%Y/%m/%d/%Y-%m-%d--%H%M-- *.jpg
বেদব্রত

1

নটিলাস-কলামগুলি নামে একটি এক্সটেনশন এখন রয়েছে যা এক্সআইএফ ডেটার পাশাপাশি এমপি 3 (আইডি 3), পিডিএফ এবং আরও মেটাডেটা যুক্ত করে। এই নতুন কলামগুলি বাছাই করার উত্স হিসাবেও ব্যবহার করা যেতে পারে।

এর সাথে ইনস্টল করুন:

sudo add-apt-repository ppa:atarea/nautilus-extensions
sudo apt update
sudo apt install nautilus-columns


1

এই কোডটি আমি ব্যবহার করছি। এটি YYYYMMDD_originalname.jpg যুক্ত ফটোগুলির নাম পরিবর্তন করে

#! /bin/bash
shopt -s globstar || exit
for PIC in **
do
# look only for jpg
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
    # ignore jpg that have 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
    if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
    :
    else
        # get the date and time from the tag
        DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
        echo "file_$PIC"
        # customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
        DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
        echo "datemod2_$DATEMOD2"
            # check if DateTimeOriginal was present
            if [[ "$PIC" == "$DATEMOD2$PIC" ]];then
            # as DateTimeOriginal is not present try with HistoryWhen
            DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
            DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
            echo "datemod2B_$DATEMOD2B"
                # check if HistoryWhen is present
                if [[ "$PIC" == "$DATEMOD2B$PIC" ]];then
                # nor the tag DateTimeOriginal, nor HistoryWhen present
                echo "skip"
                else
                # this will be done
                echo "mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2B""$PIC""
                #uncomment if you like it
                #mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2B""$PIC"
                fi
            else
            # this will be done
            echo "mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2""$PIC""
            #uncomment if you like it
            #mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2""$PIC"
            fi
     fi
fi
done

সম্পাদনা করুন। এই সংশোধনীতে, ট্যাগের তারিখটি নামের সাথে এবং স্পর্শ সহ তারিখের বৈশিষ্ট্যটিও প্রেরণ করা হয়। এছাড়াও, যদি সেই ট্যাগগুলি বিদ্যমান না থাকে তবে পরিবর্তনের ট্যাগের তারিখটি ফাইলটির নামে প্রেরণ করা হবে।

#! /bin/bash
shopt -s globstar || exit
for PIC in **
do
# look only for jpg
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
        echo "file_$PIC"
        # get the date and time from the tag DateTimeOriginal
        DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
        LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
            # check if DateTimeOriginal is 0000... OR empty
            if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
            echo "datetimeoriginal_$LONGDATE"
            # modify the attribute date with the info in the tag date
            touch -t $LONGDATE "$PIC"
            # customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
            DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
            echo "datemod2_$DATEMOD2"
                    # skip renaming if
                    # 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
                    if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
                    :
                    else
                    # this will be done

                    filename=$(basename "$PIC")
                    echo "$filename"
                    echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2""$filename"\""
                    #uncomment if you like it
                    mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2$filename"

                    fi
            else
            # get the date and time from the tag HistoryWhen

            DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
            LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')

            # check if Historywhen is 0000... or empty
                if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
                echo "historywhentag_$LONGDATE"

                touch -t $LONGDATE "$PIC"
                DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
                echo "datemod2B_$DATEMOD2B"

                    if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
                    :
                    else
                    # this will be done             
                    filename=$(basename "$PIC")
                    echo "$filename"
                    echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2B""$filename"\""
                    #uncomment if you like it
                    mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2B$filename"
                    fi

                else
                    # get the date and time from the tag tag filemodifydate

                    DATE=$(exiftool -p '$filemodifydate' "$PIC" | sed 's/[: ]//g')
                    LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')

                    # check if filemodifydate is 0000... or  empty
                    if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
                    #echo "filemodifydatetag_$LONGDATE"

                    #touch -t $LONGDATE "$PIC"
                    DATEMOD2C=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
                    echo "datemod2C_$DATEMOD2C"

                        if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
                        :
                        else
                        # this will be done             
                        filename=$(basename "$PIC")
                        echo "$filename"
                        echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2C""$filename"\""
                        #uncomment if you like it
                        mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2C$filename"
                        fi

                    else

                    echo "Error, NO date available"
                    fi
                fi
            fi
fi
done

ফোল্ডারে বাছাইয়ের জন্য (বছর এবং মাস) (YYYYmm):

exiftool "-Directory<DateTimeOriginal" -d "%Y%m" *
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.