GNU/Linux >> Linux の 問題 >  >> Linux

特定のパターンに一致するファイルを見つけ、そのファイル名をシェル スクリプトの変数に値として指定しますか?

ファイルがこのパターン file-1.2.0-SNAPSHOT.txt に従っているとします。したがって、file-1.2.0-SNAPSHOT.txt のようになります。 または file-1.3.0-SNAPSHOT.txt または file-1.5.1-SNAPSHOT.txt など、次のように find コマンドを使用してファイルを取得できます:-

find . -type f -iname "*SNAPSHOT.txt" 

SNAPSHOT.txt で終わるすべてのファイルが表示されます。 その後、それを使用して作業を行うことができます。

ドット(. ) 検索 ファイルを含む親ディレクトリにすることができます。のように

find ~/my_files/ -type f -iname "*SNAPSHOT.txt" 

あなたがしようとしているのは、最後のバージョンだけをコピーすることだと思います。

#!/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"

選択は -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
' {} {} \;

Linux
  1. Linuxで検索および検索コマンドを使用してファイルを検索する

  2. 変数でディレクトリを変更するシェルスクリプト

  3. シェルスクリプトを使用して、指定されたパターンの後にファイルに複数の行を挿入します

  1. パターンに一致する行を別のファイルの行に順番に置き換えますか?

  2. 関数とパラメータを変数として持つシェルスクリプト?

  3. Linux で現在の日付と時刻の名前のファイルを作成する方法

  1. シェルスクリプトで.inで終わり、対応する.outで終わるファイルをリストしますか?

  2. スクリプトで変数名を持つ空のファイルを作成しますか?

  3. パターンに一致する最新のファイルを見つけるための Bash 関数