GNU/Linux >> Tutoriales Linux >  >> Linux

¿Encontrar un archivo que coincida con cierto patrón y dar ese nombre de archivo como valor a una variable en el script de Shell?

Digamos que su archivo sigue este patrón file-1.2.0-SNAPSHOT.txt para que pueda ser como file-1.2.0-SNAPSHOT.txt o archivo-1.3.0-INSTANTÁNEA.txt o archivo-1.5.1-INSTANTÁNEA.txt etc., entonces puede obtener los archivos usando un comando de búsqueda como este :-

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

Le dará todos los archivos que terminan con SNAPSHOT.txt y luego puedes usarlo para hacer tu trabajo.

Punto(. ) en buscar puede ser un directorio principal que debería contener el archivo. Me gusta como

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

Creo que lo que estás tratando de hacer es copiar solo la última versión.

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

la selección se realiza a través de la opción -name y la acción se realiza a través de la opción -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. ¿Enumere cualquier archivo que termine con .in y .out correspondiente con Shell Script?

  2. Encuentre un archivo con los comandos de búsqueda y localización en Linux

  3. Variable en Bash Script que mantiene su valor desde la última vez que se ejecutó

  4. Cómo eliminar carpetas con un nombre determinado

  5. Shell script cambia de directorio con variable

Cifrado y descifrado de archivos con ccrypt

Cómo trabajar con File y Shell Provisioner en Vagrant

Copie y sobrescriba un archivo en el script de Shell

Inserte varias líneas en un archivo después del patrón especificado usando el script de shell

encontrar archivos que tengan un número en el nombre de archivo mayor que

¿Cómo eliminar un archivo con un nombre extraño?