mirror of
				https://github.com/Theodor-Springmann-Stiftung/KGPZ.git
				synced 2025-10-30 17:25:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Create a new directory for the renamed files
 | |
| mkdir -p renamed_files
 | |
| 
 | |
| # Copy all jpg files to the new directory
 | |
| cp *.jpg renamed_files/
 | |
| 
 | |
| # Change to the new directory
 | |
| cd renamed_files
 | |
| 
 | |
| # Function to calculate days between two dates
 | |
| days_between() {
 | |
|     date1=$(date -d "$1" +%s)
 | |
|     date2=$(date -d "$2" +%s)
 | |
|     echo $(( (date2 - date1) / 86400 ))
 | |
| }
 | |
| 
 | |
| # Function to check if a date is Monday or Friday
 | |
| is_monday_or_friday() {
 | |
|     day=$(date -d "$1" +%u)
 | |
|     [[ $day == 1 ]] || [[ $day == 5 ]]
 | |
| }
 | |
| 
 | |
| # Function to pad numbers with leading zeros
 | |
| pad() {
 | |
|     printf "%03d" $1
 | |
| }
 | |
| 
 | |
| # Initialize variables
 | |
| start_date="1764-02-03"
 | |
| 
 | |
| # Sort files by name (which will sort them chronologically)
 | |
| for file in $(ls -1 1764-*.jpg | sort); do
 | |
|     # Extract date from filename
 | |
|     current_date=$(echo "$file" | grep -oP '\d{4}-\d{2}-\d{2}')
 | |
|     
 | |
|     # Calculate the issue number
 | |
|     issue_number=1
 | |
|     temp_date="$start_date"
 | |
|     while [[ "$temp_date" != "$current_date" ]]; do
 | |
|         if is_monday_or_friday "$temp_date"; then
 | |
|             ((issue_number++))
 | |
|         fi
 | |
|         temp_date=$(date -d "$temp_date + 1 day" +%Y-%m-%d)
 | |
|     done
 | |
|     
 | |
|     # Count the number of files for this date
 | |
|     pages_in_issue=$(ls -1 "$current_date"*.jpg | wc -l)
 | |
|     
 | |
|     # Determine the page number within this issue
 | |
|     page_in_issue=$(echo "$file" | grep -oP '_(\d+)\.jpg$' | cut -d'_' -f2 | cut -d'.' -f1)
 | |
|     
 | |
|     # Calculate the starting page number for this issue
 | |
|     starting_page=$((4 * (issue_number - 1) + 1))
 | |
|     
 | |
|     # Calculate the actual page number
 | |
|     actual_page=$((starting_page + page_in_issue - 1))
 | |
|     
 | |
|     # Create new filename based on number of pages in the issue
 | |
|     if [ $pages_in_issue -le 4 ]; then
 | |
|         new_name="1764-$(pad $issue_number)-$(pad $actual_page).jpg"
 | |
|     else
 | |
|         if [ $page_in_issue -le 2 ] || [ $page_in_issue -gt $((pages_in_issue - 2)) ]; then
 | |
|             new_name="1764-$(pad $issue_number)-$(pad $actual_page).jpg"
 | |
|         else
 | |
|             new_name="1764-$(pad $issue_number)b-$(pad $((page_in_issue - 2))).jpg"
 | |
|         fi
 | |
|     fi
 | |
|     
 | |
|     # Rename file
 | |
|     mv "$file" "$new_name"
 | |
| done
 | |
| 
 | |
| echo "Files have been renamed in the 'renamed_files' directory."
 | 
