cg_ext - script para alteração de extensão de arquivos em larga escala
Publicado por Tairan Andreo (última atualização em 28/02/2019)
[ Hits: 1.819 ]
Script simples para realizar a troca de extensão de vários arquivos em um diretório. O programa está estável (pelos testes que realizei), mas aceito qualquer dica para a melhora do código ou para acrescentar novas funcionalidades.
Por padrão o script altera somente a extensão dos arquivos na pasta raiz informada e não nos seus subdiretórios. Caso necessário que a alteração também seja realizada para os subdiretórios (recursividade), a opção "-r" pode ser utilizada. Também existe a possibilidade de definir com mais precisão a profundidade máxima em relação ao nível que o script será aplicado nos diretórios. Essa funcionalidade é definida com a opção -maxdepth NUM, onde NUM deve ser um número inteiro não negativo.
Escrevi o script com meu inglês macarrônico mais como treino do que qualquer coisa, então se sentirem a necessidade posso alterar os comentários e a página de ajuda e deixar tudo em português.
Qualquer dúvida só chamar.
#!/bin/bash # # cg_ext.sh # Author: Tairan Andreo # Git: github.com/taandreo/ # # This program is a script to change the file extension on a large scale. # # Version 1.0: Added support for options -V | --version and -h --help. # Version 2.0: Added support for option -v | --verbose. # Version 3.0: Added support for -i and -o options. # Version 4.0: Added support for -r and -maxdepth options. NAME=$(basename "$0") # Program name # Flags: VERBOSE=0 MAX_DEPTH=1 RECURSIVE=0 HELP="Usage: $NAME [OPTIONS] -i .ext -o .ext2 DIRECTORY OPTIONS: -i Original extension. -o Final extension. -h, --help Print this help summary page. -V, --version Print the version. -v Enable Verbose. -maxdepth Define de max depth. -r Enable recursive mode. EXAMPLES: $NAME -i .txt -o .csv . Change the extension .txt to .csv for all files in this directory. $NAME -i .txt -o .csv . -v Change the extension .txt to .csv all files in this directory and show each altered file. $NAME -i .txt -o .csv /home/user -r Change the extension .txt to .csv for all files starting in /home/user and each subdirectory. " is_ext(){ # Create a regex which only matches regex='^\.[[:alnum:]][.[:alnum:]]*' if !([[ "$1" =~ $regex ]]) then echo "Invalid Argument: \"$1\"." echo "The argument must be a filename extension." exit 1 fi } test_options(){ if !(test -n "$1") then echo "-i option required." fi if !(test -n "$2") then echo "-o option required." fi if !(test -n "$3") then echo "Missing directory operand." fi if !(test -n "$1" & test -n "$2" & test -n "$3") then exit 1 fi } if !(test -n "$1") then echo "$HELP" exit 0 fi while test -n "$1" do case "$1" in -h | --help) echo "$HELP" exit 0 ;; -V | --version) echo -n $NAME egrep '^# Version' "$0" | tail -1 | cut -d : -f 1 | tr -d \# # Extract the version from the reader exit 0 ;; -v) VERBOSE=1 ;; -i) shift is_ext "$1" # Checks if the passed argument is a filename extension. INPUT_EXT=$1 ;; -o) shift is_ext "$1" # Checks if the passed argument is a filename extension. OUTPUT_EXT=$1 ;; -maxdepth) shift MAX_DEPTH=$1 ;; -r) RECURSIVE=1 ;; *) if test -d "$1" then DIRECTORY="$1" else echo "Invalid option: $1" exit 1 fi ;; esac shift done test_options $INPUT_EXT $OUTPUT_EXT $DIRECTORY if test $RECURSIVE = 1 then find $DIRECTORY -regex "^.*\\$INPUT_EXT\$" > cache_find else find $DIRECTORY -maxdepth $MAX_DEPTH -regex "^.*\\$INPUT_EXT\$" > cache_find fi while read f do if test $VERBOSE = 1 then echo $f fi mv -- "$f" "${f%$INPUT_EXT}$OUTPUT_EXT" done < cache_find rm -f cache_find
Script de alteração do sources.list
Monitorando o serviço do Squid utilizando como Proxy Transparente
Verifica conexão de Net Virtua
COMO CRIAR UM MENU PARA SCRIPT EM SHELL NO LINUX, DEBIAN, UBUNTU E ETC
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Mikrotik não abre o webmail-segur... da Locaweb (5)
Olha que maravilha, Arch no C2D 7400, 2GB de RAM, vídeo onboard e no G... (1)
Jogos baixados na Central de Aplicativos mas que não abrem (1)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)