Là một tân binh kịch bản bashie, các câu trả lời chi tiết sẽ được đánh giá cao. :)Cách phân tích tem thời gian EXIF với tập lệnh Bash
Tôi cố gắng để viết một kịch bản bash rằng phân tích JPEG EXIF tem thời gian đầu ra từ các tiện ích exiv2 commmandline, mà mang lại cho tôi kết quả điển hình như:
Hình ảnh dấu thời gian: 2010: 07: 27 17: 38:52
Có cách nào phân tích dấu thời gian sao cho thành phần của nó, như năm, tháng, ngày, giờ, phút, giây, đi vào các biến tương ứng?
Có thể sử dụng lối đi ngắn ngủi không? Nếu vậy, làm thế nào? Hoặc là một số cách khác tốt hơn?
Bằng cách này, tôi có thể thao tác hoặc trộn và kết hợp chúng theo cách tôi muốn.
Đây là kịch bản tôi đã có cho đến nay:
#!/bin/bash
COUNT=0
SKIPPED=0
FILES=0 # number of files encountered
# declare variables for time stamp
YEAR=0
MONTH=0
DAY=0
HOUR=0
MINUTE=0
SECOND=0
for CURRENT_FILE in * # a for loop to go through all files in current directory
do
if [ -f "$CURRENT_FILE" ] # see if CURRENT_FILE is a file
then
FILETYPE=$(file -b --mime-type "$CURRENT_FILE") # get file type
if [[ $FILETYPE == image/jpeg ]] # see if CURRENT_FILE's mime is image/jpeg
then
((COUNT++))
echo "Processing file $COUNT: $CURRENT_FILE"
exiv2 "$CURRENT_FILE" | grep timestamp >> list
else
((SKIPPED++))
echo "Skipping file $CURRENT_FILE....."
fi
((FILES++))
fi
done
echo "Encountered $FILES files"
echo "Processed $COUNT files"
echo "Skipped $SKIPPED files"
Cảm ơn!
Đó là tuyệt vời. CẢM ƠN BẠN rất nhiều cho câu trả lời nhanh chóng và rất chi tiết !!! :) – hpy
Đó là một câu trả lời thực sự tuyệt vời. – dawg
Đây là phiên bản đơn giản của 'split_timestamp':' split_timestamp() {local S = ($ {1 //: /}); echo $ {S [@]: 2}; } ' –