GNU/Linux >> Tutoriales Linux >  >> Linux

uso de comodines de linux en cp y mv

El find El comando se puede usar de manera bastante concisa en casos simples en los que desea realizar operaciones en coincidencias de nombre de archivo comodín (o más complejas). La siguiente técnica se puede memorizar... ¡casi!

Esto funciona dejando que el find comando ejecuta otro comando en cada nombre de archivo que encuentra. Puede ejecutar este ejemplo en seco usando echo en lugar de/delante de mv .

Si quisiéramos mover todos los archivos en el directorio actual cuyo nombre comienza con 'informe', a otro directorio paralelo llamado 'informes':

find . -name "report*.*" -exec mv '{}' ../reports/ \;

La cadena comodín debe estar entre comillas, el {} que marca el nombre del archivo que se 'encontró' debe estar entre comillas y el punto y coma final debe estar escapado, todo debido al tratamiento de esos caracteres por parte de Bash/shell.

Mire la página man para find para más usos:https://linux.die.net/man/1/find


Hablemos de cómo funcionan los comodines por un minuto.

cp *.txt foo

en realidad no invoca cp con un argumento *.txt , si existe algún archivo que coincida con ese globo. En su lugar, ejecuta algo como esto:

cp a.txt b.txt c.txt foo

Del mismo modo, algo como

mv *.txt *.old

... posiblemente no pueda saber qué hacer, porque cuando se invoca, lo que ve es:

mv a.txt b.txt c.txt *.old

o, peor aún, si ya tienes un archivo llamado z.old , verá:

mv a.txt b.txt c.txt z.old

Por lo tanto, es necesario utilizar diferentes herramientas. Considere:

# REPLACES: mv /data/*/Sample_*/logs/*_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err
for f in /data/*/Sample_*/logs/*_Data_time.err; do
  mv "$f" "${f%_Data_time.err}_Data_time_orig.err"
done

# REPLACES: cp /data/*/Sample_*/scripts/*.sh /data/*/Sample_*/scripts/*_orig.sh
for f in /data/*/Sample_*/scripts/*.sh; do
  cp "$f" "${f%.sh}_orig.sh"
done

# REPLACES: sh /data/*/Sample_*/scripts/*_orig.sh
for f in /data/*/Sample_*/scripts/*_orig.sh; do
  if [[ -e "$f" ]]; then
    # honor the script's shebang and let it choose an interpreter to use
    "$f"
  else
    # script is not executable, assume POSIX sh (not bash, ksh, etc)
    sh "$f"
  fi
done

Esto utiliza una expansión de parámetros para eliminar el final del nombre anterior antes de agregar el nuevo nombre.


Linux
  1. Uso de memoria de Linux

  2. El comando Sed de Linux:uso y ejemplos

  3. 4 Uso esencial y práctico del comando Cut en Linux

  4. Ejemplos de comandos dd en Linux

  5. Ubuntu Linux:procesamiento de memoria de intercambio y uso de memoria

Comando principal de Linux

Cómo ver el uso del disco con Duf en Linux y Unix

Comando rm en Linux

Comando Mv en Linux

El comando AWK de Linux:ejemplos de sintaxis de uso de Linux y Unix

7 Uso esencial y práctico del comando Pegar en Linux