簡體   English   中英

如何在Shell腳本中修改文件名?

[英]How to modify a file name within a shell script?

我正在編寫一個shell腳本以同步到github存儲庫,開始構建,然后獲取輸出文件,對其進行重命名,然后將其移動到Apache可以看到的位置。

這是文件的重命名,我還沒有在shell腳本中最隱秘的操作方法(我幾乎沒有shell腳本的經驗-我的理解

編譯器將創建/var/espbuild/firstpart_1vXX_secondpart.bin

我需要將此文件移至:

/var/www/html/builds/espbuild/firstpart_1vXX_DATE_secondpart_postfix.bin

1vXX是版本號

DATE是日期+%m-%d的輸出

后綴只是一個字符串。

我不太確定從何處開始這樣的事情-我敢肯定有一種優美的方法,因為這是Shell腳本的目的,但我對Shell腳本一無所知。

提前致謝

您可以使用$()將命令的結果轉換為變量:

DATE=$(date +%m-%d)

然后在新文件名中使用它:

INPUT=/var/espbuild/firstpart_1vXX_secondpart.bin
OUTPUT=/var/www/html/builds/espbuild/firstpart_1vXX_${DATE}_secondpart_postfix.bin
mv ${INPUT} ${OUTPUT}

編輯:要獲取版本部分,這是一個簡單的示例:

VERSION=$(grep -o 1v.. <<< ${INPUT})

然后應將OUTPUT設置為:

OUTPUT=/var/www/html/builds/espbuild/firstpart_${VERSION}_${DATE}_secondpart_postfix.bin

您可以在BASH中使用它:

f='/var/espbuild/firstpart_1vXX_secondpart.bin'
s="${f##*/}"
s2=${s##*_}
dest="/var/www/html/builds/espbuild/${s%_*}_$(date '+%m-%d')_${s2%.*}_postfix.bin"

echo "$dest"
/var/www/html/builds/espbuild/firstpart_1vXX_07-14_secondpart_postfix.bin

cp "$f" "$dest"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM