Advertisement
JanisPlayer

fix create date

Feb 14th, 2024
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.37 KB | Source Code | 0 0
  1. #!/bin/bash
  2.  
  3. # Durchsuche den Ordner nach unterstützten Bilddateiformaten und Videodateiformaten
  4. find "./" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' -o -iname '*.mp4' \) | while read -r file; do
  5.     if [[ "$file" =~ \.jpg$ || "$file" =~ \.jpeg$ || "$file" =~ \.png$ || "$file" =~ \.gif$ ]]; then
  6.         # Extrahiere das Aufnahmedatum aus den EXIF-Daten für Bilder
  7.         capture_date=$(exiftool -d "%Y%m%d%H%M%S" -DateTimeOriginal -s -s -s "$file" 2>/dev/null)
  8.     elif [[ "$file" =~ \.mp4$ ]]; then
  9.         # Extrahiere das Erstellungsdatum aus den EXIF-Daten für Videos
  10.         capture_date=$(exiftool -d "%Y%m%d%H%M%S" -CreateDate -s -s -s "$file" 2>/dev/null)
  11.     fi
  12.  
  13.     # Überprüfe, ob das Datum erfolgreich extrahiert wurde
  14.     if [ -n "$capture_date" ]; then
  15.         # Überprüfe, ob das Änderungsdatum bereits dem extrahierten Datum entspricht
  16.         current_date=$(stat -c %y "$file" | cut -d ' ' -f1 | tr -d '-')
  17.            
  18.         if [ "$current_date" != "${capture_date:0:8}" ]; then
  19.             # Setze das Änderungsdatum mit touch
  20.             touch -d "${capture_date:0:4}-${capture_date:4:2}-${capture_date:6:2} ${capture_date:8:2}:${capture_date:10:2}:${capture_date:12:2}" "$file"
  21.             echo "Änderungsdatum von $file erfolgreich auf $capture_date gesetzt."
  22.         else
  23.             echo "Änderungsdatum entspricht bereits dem extrahierten Datum. Überspringe."
  24.         fi
  25.     else
  26.         echo "EXIF-Daten für Datum nicht gefunden: $file"
  27.     fi
  28.  
  29.     echo "-------------------"
  30. done
  31.  
  32. for file in IMG*.jpg IMG*.jpeg VID*.mp4; do
  33.     # Extrahiere das Datum aus dem Dateinamen
  34.     date_str=$file
  35.  
  36.     # Wenn kein Datum gefunden wird, überspringe die Datei
  37.     if [ -z "$date_str" ]; then
  38.         echo "Kein Datum im Dateinamen gefunden: $file"
  39.         continue
  40.     fi
  41.  
  42.     # Erstelle separate Variablen für Datum und Uhrzeit
  43.     date_part=${date_str:4:8}
  44.     time_part=${date_str:13:6}
  45.  
  46.     echo "Originaler Dateiname: $file"
  47.     echo "Extrahiertes Datum: $date_str"
  48.     echo "Datumteil: $date_part"
  49.     echo "Zeitteil: $time_part"
  50.    # Überprüfe, ob das Datum im erwarteten Format ist
  51.     if [[ $time_part =~ ^[0-9]+$ ]]; then
  52.     # Überprüfe, ob das Uhrzeitteil ein negatives Vorzeichen hat
  53.     formatted_date="${date_part:0:4}-${date_part:4:2}-${date_part:6:2} ${time_part:0:2}:${time_part:2:2}:${time_part:4:2}"
  54.     else
  55. echo "ungültige uhrzeit"
  56.             hours=0
  57.         minutes=0
  58.         seconds=0
  59.         formatted_date="${date_part:0:4}-${date_part:4:2}-${date_part:6:2} ${hours}:${minutes}:${seconds}"
  60.     fi
  61.  
  62.     echo "Formatiertes Datum: $formatted_date"
  63.  
  64.     # Überprüfe, ob die Datumsumwandlung erfolgreich war
  65.     if [ -n "${formatted_date}" ]; then
  66.         # Überprüfe, ob das Änderungsdatum bereits dem extrahierten Datum entspricht
  67.         current_date=$(stat -c %y "$file" | cut -d ' ' -f1 | tr -d '-')
  68.         echo "Datei Datum:  $current_date"
  69.         if [ "$current_date" != "$date_part" ]; then
  70.             # Setze das Änderungsdatum mit touch
  71.             touch -d "${formatted_date}" "$file"
  72.             echo "Änderungsdatum von $file erfolgreich gesetzt."
  73.         else
  74.             echo "Änderungsdatum entspricht bereits dem extrahierten Datum. Überspringe."
  75.         fi
  76.     else
  77.         echo "Ungültiges Datumsformat für Datei: $file"
  78.     fi
  79.  
  80.     echo "-------------------"
  81. done
  82.  
  83. for file in Screenshot_*.webp; do
  84.     # Extrahiere das Datum aus dem Dateinamen
  85.     date_str=$(echo "$file" | sed 's/Screenshot_\([0-9]\{8\}-[0-9]\{6\}\)\.webp/\1/')
  86.    
  87.     # Erstelle separate Variablen für Datum und Uhrzeit
  88.     date_part=${date_str:0:8}
  89.     time_part=${date_str:9}
  90.    
  91.     echo "Originaler Dateiname: $file"
  92.     echo "Extrahiertes Datum: $date_str"
  93.     echo "Datumteil: $date_part"
  94.    
  95.     formatted_date="${date_part:0:4}-${date_part:4:2}-${date_part:6:2} ${time_part:0:2}:${time_part:2:2}:${time_part:4:2}"
  96.    
  97.     echo "Formatiertes Datum: $formatted_date"
  98.    
  99.     # Überprüfe, ob die Datumsumwandlung erfolgreich war
  100.     if [ -n "${formatted_date}" ]; then
  101.         # Setze das Änderungsdatum mit touch
  102.         touch -d "${formatted_date}" "$file"
  103.        
  104.         echo "Änderungsdatum von $file erfolgreich gesetzt."
  105.     else
  106.         echo "Ungültiges Datumsformat für Datei: $file"
  107.     fi
  108.    
  109.     echo "-------------------"
  110. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement