GNU/Linux >> Tutoriales Linux >  >> Linux

¿Enumerar todos los directorios que no tienen un archivo con un nombre de archivo determinado dentro?

¿Cómo entraría en la lista de todos los directorios que no tiene un archivo con un nombre de archivo dado dentro? p.ej. dado este árbol

/
  /a
     README
     file001
     file002
  /b
     README
     file001
  /c
     file003

Quiero enumerar los directorios que no tener un archivo llamado README , en este caso sería el directorio /c . ¿Como podría hacerlo? No puedo pensar en ninguna sintaxis usando, p. find .

Respuesta aceptada:

Asumiendo un find implementación como GNU find que acepta un {} incrustado en un argumento para -exec :

$ find . -type d ! -exec test -e '{}/README' ; -print

o, sin la incrustación problemática:

$ find . -type d ! -exec sh -c 'test -e "$1"/README' sh {} ; -print

Ejemplo

Aquí los directorios 1/1 a 5/5 tienen un LÉAME, los otros directorios están vacíos.

$ tree 
.
|-- 1
|   `-- 1
|       `-- README
|-- 10
|   `-- 10
|-- 2
|   `-- 2
|       `-- README
|-- 3
|   `-- 3
|       `-- README
|-- 4
|   `-- 4
|       `-- README
|-- 5
|   `-- 5
|       `-- README
|-- 6
|   `-- 6
|-- 7
|   `-- 7
|-- 8
|   `-- 8
`-- 9
    `-- 9

Ahora, cuando ejecutamos esta versión de nuestro find comando:

$ find . -type d ! -exec test -e '{}/README' ; -print
.
./10
./10/10
./7
./7/7
./9
./9/9
./6
./6/6
./5
./8
./8/8
./4
./1
./3
./2

Referencias

  • ¿Excluir directorios en find que no contengan un nombre de archivo específico?

Linux
  1. Listado de todas las direcciones de correo electrónico en un archivo con grep

  2. ¿Cómo puedo obtener Ls para listar directorios con una barra inclinada al final?

  3. ¿Cómo matar todos los procesos con un nombre parcial dado?

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

  5. Mostrar el historial de un archivo (lista de usuarios que han modificado un archivo)

Comando Ls en Linux (Lista de archivos y directorios)

Listar todos los archivos de imágenes gráficas con find?

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

En Linux, cómo crear un archivo con un nombre que sea la fecha y hora actuales

¿Encontrar directorios con todos los archivos dentro de más de X?

Archivo mv de Linux con nombre largo