nome-de-arquivo substitua usando opções no shell script do Linux

0

Estou usando o comando abaixo para substituir os nomes dos arquivos na pasta /opt/jboss/QueueStandalone/cron todos os arquivos .sh :

find /opt/jboss/QueueStandalone/cron -name '*.sh' -exec sed -i -e 's/Old-name/New-name/g' {} \;

Minha consulta é que estou trabalhando para criar um script de shell, como se fosse necessário fazer um backup de todos os arquivos .sh usando as opções como

Old-name=
New-name=

Se eu inserir os dois valores usando script, ele precisará ser alterado em todos os arquivos .sh .

    
por Kumar 29.10.2017 / 09:42

1 resposta

0

Os nomes das variáveis do shell não devem conter um traço.

old_name="foo"
new_name="bar"
sed -i -e "s/${old_name}/${new_name}/g"

Mas certifique-se de que o antigo e o novo nome não contenham nada que possa ser interpretado por sed (como um ponto ...). Ou você teria que escapar desses caracteres:

old_name="foo\.sh"
new_name="bar.sh"

Mas toda a abordagem parece muito estranha para mim. Normalmente você passaria parâmetros para um script e o chamaria como

/path/to/script "$old_name" "$new_name"

ou

OLD_NAME=foo NEW_NAME=bar /path/to/script
    
por 29.10.2017 / 13:35