Renomeie dentro do arquivo crontab

Renomeie dentro do arquivo crontab

Queria renomear o nome do arquivo, colocando mais detalhes para poder obter a resposta para minha pergunta:

Eu tenho as linhas abaixo no crontab

00 * * * * /home/@@@@/ulimit_nofile_status_20480.sh >> /export/####/$$$$$/ulimit_nofile_status.txt

00 * * * * /home/@@@@/ulimit_nproc_status_20480.sh >> /export/####/%%%%/ulimit_nproc_status.txt

Quero alterar os nomes dos arquivos ulimit_nofile_status_20480.she ulimit_nproc_status_20480.shpara ulimit_nofile_status_40960.she ulimit_nproc_status_40960.shrespectivamente.

Em outras palavras, quero renomear 20480 para 40960

Eu tentei os comandos abaixo, mas eles não funcionaram para mim.

crontab -l | sed 's#/_20480\.#/40960.#' | crontab -
crontab -l | sed 's/\<_20480\>/40960/' | crontab -
"sed -i s//40960/" crontab -e

Responder1

Suas expressões regulares são uma loucura. O seguinte deve funcionar.

crontab -l | sed 's#_20480\.#_40960.#' | crontab -

Sua tentativa exigiu que houvesse uma barra antes do sublinhado, mas é claro que não há nenhuma em seu crontabarquivo, então o regex não correspondeu a nada.

Você diz que deseja substituir 20480, 40960mas várias de suas tentativas parecem que você também deseja remover o sublinhado antes do número. Se isso estiver correto, obviamente retire-o da string de substituição.

Eu especulo que você sednão reconhece \<o que de outra forma teria sido uma boa tentativa.

A última de suas tentativas está tão distante de qualquer sintaxe válida que não acho que possa comentá-la de forma significativa. Ele analisa como uma tentativa de usar a string sed -i s//40960/como o nome de um comando, com os argumentos crontabe -lpassados ​​a ele como parâmetros.

informação relacionada