GNU/Linux >> Znalost Linux >  >> Linux

Najít soubor odpovídající určitému vzoru a dát tomuto názvu souboru jako hodnotu proměnné ve skriptu shellu?

Řekněme, že váš soubor se řídí tímto vzorem soubor-1.2.0-SNAPSHOT.txt, takže může být jako soubor-1.2.0-SNAPSHOT.txt nebo soubor-1.3.0-SNAPSHOT.txt nebo soubor-1.5.1-SNAPSHOT.txt atd. pak můžete získat soubory pomocí příkazu find, jako je tento :-

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

Poskytne vám všechny soubory, které končí na SNAPSHOT.txt a pak jej můžete použít ke své práci.

Tečka(. ) v najít může být nadřazený adresář, který by měl soubor obsahovat. Jako

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

Myslím, že se snažíte zkopírovat pouze poslední verzi.

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

výběr se provádí pomocí volby -name a akce pomocí volby -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. Vytvoření prázdného souboru s názvem proměnné ve skriptu?

  2. Funkce Bash pro nalezení nejnovějšího vzoru pro shodu souborů

  3. Najít a nahradit ve skriptování shellu

  1. Jak odstranit složky s určitým názvem

  2. Zkopírujte a přepište soubor ve skriptu shellu

  3. Vložit více řádků do souboru po zadaném vzoru pomocí shell skriptu

  1. najít soubory, které mají číslo v názvu souboru větší než

  2. Jak odstranit soubor s podivným názvem?

  3. Šablony s Linuxem ve skriptu Shell?