GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Finden Sie eine Datei, die mit einem bestimmten Muster übereinstimmt, und geben Sie diesen Dateinamen als Wert an eine Variable im Shell-Skript?

Angenommen, Ihre Datei folgt diesem Muster file-1.2.0-SNAPSHOT.txt, sodass sie wie file-1.2.0-SNAPSHOT.txt aussehen kann oder file-1.3.0-SNAPSHOT.txt oder file-1.5.1-SNAPSHOT.txt usw. dann können Sie die Dateien mit dem Suchbefehl wie folgt abrufen:-

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

Sie erhalten alle Dateien, die mit SNAPSHOT.txt enden und dann können Sie es für Ihre Arbeit verwenden.

Punkt(. ) in finden kann ein übergeordnetes Verzeichnis sein, das die Datei enthalten soll. Wie als

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

Ich denke, was Sie versuchen, ist, nur die letzte Version zu kopieren.

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

Die Auswahl erfolgt über die Option -name und die Aktion über die Option -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. Dateiverschlüsselung und -entschlüsselung mit ccrypt

  2. Erstellen einer leeren Datei mit einem Variablennamen in einem Skript?

  3. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  4. Suchen und Ersetzen in Shell-Skripten

  5. So entfernen Sie Ordner mit einem bestimmten Namen

So arbeiten Sie mit File and Shell Provisioner in Vagrant

Variable in Bash-Skript, die ihren Wert von der letzten Ausführung beibehält

Kopieren und überschreiben Sie eine Datei im Shell-Skript

Shell-Skript ändert Verzeichnis mit Variable

Dateien finden, deren Nummer im Dateinamen größer als ist

Wie lösche ich eine Datei mit einem seltsamen Namen?