Cómo usar (ESTO=x O ESO=Y) Y OTRO=Z con el comando de búsqueda

Cómo usar (ESTO=x O ESO=Y) Y OTRO=Z con el comando de búsqueda

Estoy convirtiendo mi biblioteca de videos a x265 desde x264 usando lo siguiente:

Busca x264 en cualquier parte del nombre del archivo, pero excluye cualquiera que comience con x265, ya que son los archivos que se han completado.

sudo find /mnt/local/int001/media/TV/ -name '*x264*.mkv' -and -not -name 'X265*.mkv' -print0 | xargs -0 /usr/local/bin/ConvertTo265.sh

He encontrado muchos etiquetados como h264 (Estándar de codificación) en lugar de x264 (Implementación específica de h264), así como otras variaciones.

¿Cómo mejoro mi búsqueda de:

NO contiene 'X265*', pero contiene UNO o más de los siguientes:

  • 'x264'
  • 'h264'
  • 'h.264'

Respuesta1

find /mnt/local/int001/media/TV/ \
  \( -name '*[xXhH]264*.mkv' -o -name '*[xXhH].264*.mkv' \) \
  ! -name '*[xX]265*' -type f -exec /usr/local/bin/ConvertTo265.sh {} +

Aquí reemplazamos sus GNUismos ( -and,, / ) con sus equivalentes estándar ( o nada -not, ya que es el valor predeterminado, ) .-print0xargs -0-a!-exec cmd {} +

Reemplácelo mkvcon [mM][kK][vV]si también desea hacer coincidir la extensión sin distinguir entre mayúsculas y minúsculas (o úselo -inamesi usa GNU findo compatible).

Con zsh:

set -o extendedglob # best in ~/.zshrc
ConvertTo265.sh ./**/(#i)(*x265*~*[xh](.|)264*).mkv(D.)

información relacionada