Esta semana uno cortito: un pequeño script para renombrar carpetas, nombres de archivos y contenido de los mismos de manera recursiva, dentro de un directorio. Últimamente me ha hecho mucha falta en el curro y lo acabé escribiendo, espero que os sea útil a vosotros también :).
replace-text.sh
function replace_help() {
cat <<EOT
------------------------------------------------------------------------------
REPLACE TEXT - Recursively replaces text in folder names, file names and files
content in the current directory
------------------------------------------------------------------------------
Usage: ./replace-text.sh [options] <source-text-regex> <replacement>
Options:
-h, --help output instructions
Example:
# will replace the regex "004" with text "010"
./replace-text.sh 004 010
------------------------------------------------------------------------------
EOT
}
# Show help
if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then
replace_help
exit
fi
local SOURCE=$1
local TARGET=$2
shopt -s globstar
rename "s/$SOURCE/$TARGET/g" **
find . -type f -exec sed -i "s/$SOURCE/$TARGET/g" {} +
(NOTA: la línea shopt -s globstar
sirve para poder utilizar el wildcard **, para iterar recursivamente sobre el directorio actual)
Enjoy!!
Comments