O shell armazena todos os argumentos da linha de comando no que é chamado de parâmetros posicionais , $1
, $2
, $3
etc.
Um script simples que renomeia todos os arquivos que correspondem a wid_*.jil
em um diretório, substituindo a string orig
por update
no nome do arquivo, pode ter esta aparência:
#!/bin/sh
dir="$1"
if [ -d "$dir" ]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="$( basename "$filepath" | sed 's/orig/update/g' )"
mv -i "$filepath" "$dir/$filename"
done
Ou, sem usar utilitários externos, com bash
:
#!/bin/bash
dir="$1"
if [[ -d "$dir" ]]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="${filepath##*/}"
filename="${filename//orig/update}"
mv -i "$filepath" "$dir/$filename"
done