crontabファイル内の名前を変更する

crontabファイル内の名前を変更する

質問に対する回答が得られるように、ファイル名を変更して詳細を追加したいと思いました。

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

ulimit_nofile_status_20480.shファイル名を とをそれぞれとulimit_nproc_status_20480.shに変更します。ulimit_nofile_status_40960.shulimit_nproc_status_40960.sh

つまり、20480を40960に名前変更したいのです

以下のコマンドを試しましたが、うまくいきませんでした。

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

答え1

正規表現がおかしいです。次の正規表現が機能するはずです。

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

試行ではアンダースコアの前にスラッシュが必要でしたが、もちろん、crontabファイルにはスラッシュがないため、正規表現は何も一致しませんでした。

置換したい20480とおっしゃっ40960ていますが、いくつかの試みを見ると、数字の前のアンダースコアも削除したいようです。それが正しい場合は、置換文字列からアンダースコアを削除してください。

そうでなければ良い試みだったであろうことをあなたはsed認識していないのではないかと推測します。\<

最後の試みは、有効な構文からかけ離れているため、意味のあるコメントはできないと思います。これは、引数をパラメーターとして渡して、文字列をsed -i s//40960/コマンドの名前として使用しようとしているものとして解析されます。crontab-l

関連情報