
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.sh
e ulimit_nproc_status_20480.sh
para ulimit_nofile_status_40960.sh
e ulimit_nproc_status_40960.sh
respectivamente.
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 crontab
arquivo, então o regex não correspondeu a nada.
Você diz que deseja substituir 20480
, 40960
mas 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ê sed
nã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 crontab
e -l
passados a ele como parâmetros.