Skip to content

Instantly share code, notes, and snippets.

@pfrozi
Last active November 18, 2020 13:34
Show Gist options
  • Save pfrozi/35ff3d04e4355f3980fe08d53a4353ca to your computer and use it in GitHub Desktop.
Save pfrozi/35ff3d04e4355f3980fe08d53a4353ca to your computer and use it in GitHub Desktop.
Replace filename, foldername and file content from a path.
#!/usr/bin/env bash
# $1: base path
# $2: vendor name (lowercase)
# $3: new vendor name (lowercase)
# Sample: bash find-and-move.sh ~/workspace/company company company2
path=$1
vendor=$2
vendor_upper=$(echo "$vendor" | sed 's/.*/\u&/')
new_vendor=$3
new_vendor_upper=$(echo "$new_vendor" | sed 's/.*/\u&/')
cd $path
echo "Processing Folder: $path"
echo "Old vendor: $vendor / $vendor_upper"
echo "New Vendor: $new_vendor / $new_vendor_upper"
echo "--- Processing FOLDERS --- Press enter to continue . . ."
read
result=`find ${path} -maxdepth 10 -not -path "*.git*" -type f -name "*${vendor}*"`
for item in ${result[@]}; do
echo "--->"
filename="$(basename $item)"
directory="$(dirname $item)"
new_name=${filename//$vendor/$new_vendor}
echo "Folder: $directory"
echo "Old Name: $filename"
echo "New name: $new_name"
git mv "$directory/$filename" "$directory/$new_name"
done
echo "Press enter to continue . . ."
read
result=`find ${path} -maxdepth 10 -not -path "*.git*" -type f -name "*${vendor_upper}*"`
for item in ${result[@]}; do
echo "--->"
filename="$(basename $item)"
directory="$(dirname $item)"
new_name=${filename//$vendor_upper/$new_vendor_upper}
echo "Folder: $directory"
echo "Old Name: $filename"
echo "New name: $new_name"
git mv "$directory/$filename" "$directory/$new_name"
done
echo "Press enter to continue . . ."
read
result=`find ${path} -maxdepth 10 -not -path "*.git*" -type d -name "*${vendor_upper}*" | sort -n -r`
for item in ${result[@]}; do
if [ "$item" = "$path" ]; then
continue
fi
echo "--->"
folder_name="$(basename $item)"
directory="$(dirname $item)"
new_folder_name=${folder_name//$vendor_upper/$new_vendor_upper}
echo "Folder: $directory"
echo "Old Name: $folder_name"
echo "New name: $new_folder_name"
git mv "$directory/$folder_name" "$directory/$new_folder_name"
done
echo "Press enter to continue . . ."
read
result=`find ${path} -maxdepth 10 -not -path "*.git*" -type d -name "*${vendor}*" | sort -n -r`
for item in ${result[@]}; do
if [ "$item" = "$path" ]; then
continue
fi
echo "--->"
folder_name="$(basename $item)"
directory="$(dirname $item)"
new_folder_name=${folder_name//$vendor/$new_vendor}
echo "Folder: $directory"
echo "Old Name: $folder_name"
echo "New name: $new_folder_name"
git mv "$directory/$folder_name" "$directory/$new_folder_name"
done
echo "--- Processing FILES --- Press enter to continue . . ."
read
pattern="$vendor_upper\."
replace="$new_vendor_upper\."
result=`grep -Rl --exclude-dir={.git/,lib/} $pattern $path`
for item in ${result[@]}; do
echo ">>>> Changes"
echo "File: $item"
grep $pattern $item
echo " >>>> Find/Replace"
sed -i "s/"$pattern"/"$replace"/g" $item
echo "<<<<"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment