1 votos

Uso de Find, Execdir y Grep en un solo comando

Estoy tratando de usar un shell script para:

  • devuelve todos los archivos .mov en un directorio dado
  • sin ruta, sólo nombres de archivos
  • filtrar los archivos de puntuación de los resultados
  • separar cada resultado por \n pero ni siquiera han llegado a esa parte

No sé por qué hay archivos con puntos bajos, pero es un servidor compartido así que no quería borrarlos por si acaso. También hay espacios en la Ruta, por lo que separar los resultados por espacios da resultados interesantes.

Hasta ahora he descubierto cómo hacer estas cosas pero no en conjunto. Este comando devolverá todos los resultados, sin archivos con puntos bajos, pero sólo devuelve la ruta completa, no puedo conseguir que devuelva el nombre base:

results="$(find /Path/ -iname "*.mov" -type f | grep -vF '/._')"

Y entonces este comando devolverá sólo los nombres de base, pero incluye los archivos de puntuación

results="$(find /Path/ -iname "*.mov" -execdir echo {} ';' | grep -vF '/._')"

Como puedes ver en el segundo intento, he intentado enlazar los dos juntos... pero de alguna manera -execdir está haciendo que el comando ignore el comando grep al final. Estoy seguro de que estoy tuberías algo mal, pero por favor hágamelo saber.

1voto

Puede utilizar find para omitir los archivos no deseados, no es necesario grep después:

find PATH \( -name '._*' -prune \) -o -type f -iname '*.mov' -execdir echo {} \;

Para crear un archivo de texto con el resultado, añada > path/to/text-file al final.

PD: La razón por la que tu segundo comando no funciona está en el patrón utilizado para grep . Se elimina el nombre de la ruta en el find Así que grep -v '^\._' debería utilizarse en su lugar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X