Me gustaría obtener una lista de registros de errores en el directorio actual para usar en un script externo, los registros se determinan con el patrón FAIL en el nombre del archivo, por lo que he estado usando un FAIL* para alimentar mis archivos de script para abrir y proceso. Sin embargo, para cada archivo FAIL existen dos tipos, un archivo comprimido y otro sin comprimir. Sólo quiero abrir el archivo sin comprimir.
¿Es posible encadenar encontrar FAIL* pero no si existe *.gz/bz2/lo que sea?
Respuesta1
Puede probar la presencia de una expresión regular para esas extensiones:
for file in *FAIL*; do [[ ! $file =~ .(bz2|gz) ]] && printf "%s\n" "$file"; done
Insertar advertencia obligatoria sobreno analizarls
...
Respuesta2
Si usa el find
comando, puede omitir los archivos que terminan en la extensión .gz
así:
$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL.gz
$ find . -name "*FAIL*" ! -name "*.gz"
./FAIL
También puedes filtrar ls
la salida de esta manera:
$ ls *FAIL* | grep -v '.gz'
FAIL
Pero generalmente es aconsejable no analizar ls
la salida, ya que no está estructurada para que sea propicio para hacerlo.