first commit
This commit is contained in:
53
updatelinks.sh
Normal file
53
updatelinks.sh
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
# Check if a directory argument was provided
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <directory>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SEARCH_DIR="$1"
|
||||
|
||||
# Validate that the directory exists
|
||||
if [ ! -d "$SEARCH_DIR" ]; then
|
||||
echo "Error: Directory '$SEARCH_DIR' does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Starting search and replace in directory: $SEARCH_DIR"
|
||||
|
||||
# Function to process a file
|
||||
process_file() {
|
||||
local file="$1"
|
||||
echo "Processing file: $file"
|
||||
|
||||
# Create a backup of the original file
|
||||
cp "$file" "${file}.bak"
|
||||
|
||||
# Use sed to perform the replacements
|
||||
# For three-item pattern: [text1', 'text2', 'text3] -> [[text1]], [[text2]], [[text3]]
|
||||
sed -i -E 's/\[(([^,'\'']*)[^,]*'\''[[:space:]]*,[[:space:]]*'\''([^,'\'']*)[^,]*'\''[[:space:]]*,[[:space:]]*'\''([^,'\'']*)[^]]*)\]/[[\2]], [[\3]], [[\4]]/g' "$file"
|
||||
|
||||
# For two-item pattern: [text1', 'text2] -> [[text1]], [[text2]]
|
||||
sed -i -E 's/\[(([^,'\'']*)[^,]*'\''[[:space:]]*,[[:space:]]*'\''([^,'\'']*)[^]]*)\]/[[\2]], [[\3]]/g' "$file"
|
||||
|
||||
# Check if any changes were made
|
||||
if cmp -s "$file" "${file}.bak"; then
|
||||
echo " No changes made to $file"
|
||||
rm "${file}.bak"
|
||||
else
|
||||
echo " Updated $file"
|
||||
fi
|
||||
}
|
||||
|
||||
# Find all text files recursively and process them
|
||||
find "$SEARCH_DIR" -type f -not -path "*/\.*" | while read -r file; do
|
||||
# Check if file contains the pattern before processing
|
||||
if grep -q "\[.*'.*,.*'.*\]" "$file" 2>/dev/null; then
|
||||
process_file "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Search and replace operation completed"
|
||||
Reference in New Issue
Block a user