我正在尋找一種方法來將檔案名稱指派給 shell 腳本中的變數。但我的文件的命名格式為文件-1.2.0-SNAPSHOT.txt。
這裡的數字有時可能會改變,現在我如何將此檔案名稱指派給變數。可以使用任何正規表示式嗎?或者grep?或者尋找?或者文件?
我的目錄包含以下檔案:
file-1.2.0-SNAPSHOT.txt
newFile-1.0.0.txt
sample.txt
我的劇本腳本文件:
file_path="/home/user/handsOn"
var=$file_path/file-1.2.0-SNAPSHOT.txt
newLocation=/new_path
cp $var $newLocation
現在文件版本有時會改變。我的腳本應該適用於任何版本號。
如何將符合的檔案名稱分配給變數?幫幫我。 TIA
答案1
假設您的檔案遵循此模式 file-1.2.0-SNAPSHOT.txt 所以它可以像文件-1.2.0-SNAPSHOT.txt或者文件-1.3.0-SNAPSHOT.txt或者文件-1.5.1-SNAPSHOT.txt等等,然後你可以使用 find 指令取得文件,如下所示:-
find . -type f -iname "*SNAPSHOT.txt"
它會給你所有以結尾的文件快照.txt然後你就可以用它來完成你的工作。
點(。) 在尋找可以是應包含該檔案的父目錄。喜歡作為
find ~/my_files/ -type f -iname "*SNAPSHOT.txt"
答案2
答案3
我認為您想要做的就是僅複製最後一個版本。
#!/bin/bash
oldlocation="/file_path/"
newlocation="/new_path/"
cd "$oldlocation"
#Get the last version
file="$(ls *SNAPSHOT.txt | sort -V | tail -n1)"
cp -v "$file" "$newlocation" && echo "Everything is ok"
答案4
選擇透過 -name 選項進行,操作透過 -exec 選項進行。
find . -type f -name '*-[0-9].[0-9].[0-9]-SNAPSHOT.txt' -exec sh -c '
file=$1
# do what you want with $file as many times as you want
' {} {} \;