
我想重命名文件名,輸入更多詳細信息,以便我可以獲得問題的答案:
我在 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.sh
和ulimit_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
作為參數傳遞給它。