6

Requiero realizar la búsqueda de todos los archivos que tengan un guión seguido del número 2015 en un profundidad de máximo 1 directorio, esto equivaldría al directorio actual y otro dentro de alguna carpeta sin pasar a sus sub-carpetas de la misma. Tomando en cuenta que tengo una estructura como la siguiente:

./
- index-2015/
-- otrodir/
-- assets-2015/
-- tmp/ 
- contacto-2015/
- contacto/
- index/
- subdominios/
-- subd1/ <-- A partir de aquí ya no debería listar las coincidencias
--- hoja1-2015/
--- hoja2-2015/

Comando en uso

Para listar todos los directorios del nivel actual en el que me encuentro (sin sub-directorios que coincidan) uso:

ls | grep '\w-2015'

El problema con ese es que me lista los archivos también, otra solución es:

ls -d *-2015

Aunque no me lista en subdirectorios. Utilicé el siguiente comando pero no me devolvió ningún resultado:

find ./ -type d -regex '/\w-2015/'
Paul Vargas
  • 181
  • 1
  • 20
  • 39
Chofoteddy
  • 5,975
  • 5
  • 25
  • 65
  • ¿Archivos o directorios? Arriba mencionas archivos, pero en tu comando `find` usad para tipo directorio – César Dec 14 '15 at 16:45

1 Answers1

6

El siguiente comando usará una profundidad máxima de 2 mediante el uso de la opción -maxdepth, es decir, la carpeta de la ruta que especificas y un nivel mas:

$ find . -type f -name "*-2015" -maxdepth 2

Ejemplo:

En mi proyecto tengo:

$ tree
.
├── administracion
│   ├── admin.py
│   ├── ajax.py
│   ├── forms.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py

$ find . -type f -name "*.py" -maxdepth 2
./administracion/views.py
./administracion/urls.py
./administracion/__init__.py
./administracion/models.py
./administracion/admin.py
./administracion/ajax.py
./administracion/tests.py
./administracion/forms.py

No desciende hasta la carpeta migrations. Pero si uso:

$ find . -type f -name "*.py" -maxdepth 3
./administracion/views.py
./administracion/urls.py
./administracion/__init__.py
./administracion/models.py
./administracion/admin.py
./administracion/ajax.py
./administracion/migrations/__init__.py
./administracion/tests.py
./administracion/forms.py
César
  • 16,990
  • 6
  • 37
  • 76
  • 2
    Gracias, en efecto me funcionó, el comando final quedó: `find . -maxdepth 2 -type d -regex '.*-2015'` – Chofoteddy Dec 14 '15 at 17:01
  • 2
    @Chofoteddy nótese que en este caso no hace falta usar `-regex` pues `-name` puede procesar un regex sencillito como este `"*-2005"`. – fedorqui Dec 15 '15 at 18:43
  • @fedorqui de acuerdo, usa `-regex` para algo mas complicado, con `-name` basta para este caso – César Dec 15 '15 at 19:20