2012-06-17 10 views
7

Tengo una carpeta con algunos archivos de puntos para los que me gustaría hacer enlaces simbólicos. No puedo ver una manera fácil de hacer esto.Buscar bash, excluir padre?

ls -a ~/dotfiles incluirá los dotfiles, sino también . y ..

find ~/dotfiles -maxdepth 1 incluirá los dotfiles, sino también ~/dotfiles

Respuesta

13

Basado en MvanGeest’s comenta que esto parece funcionar.

find ~/dotfiles -maxdepth 1 -mindepth 1 

Esto se ve a hacer el trabajo, así

ls -A ~/dotfiles 
+1

+1 estaba a punto de publicar una respuesta con 'opción -A de ls' hasta que vi esto. – chepner

+0

@StevenPenny Estaba usando BSD find en lugar de GNU find, tienes razón, y cambiaré mis scripts en consecuencia. Gracias por señalar eso. –

1

Parece que estás tratando de encontrar archivos punto, es decir. Archivos que comienzan con un "." y tener un segundo personaje que no es un ".". Esto debería hacer el trabajo:

find . -name '.[^.]*' 

para enlazar todos los archivos que se encuentran en/ruta/a/dir:

find $PWD -name '.[^.]*' -exec ln -s '{}' /path/to/dir \; 

Tenga en cuenta que "$ PWD" produce una ruta absoluta, como enlaces simbólicos a las rutas relativas se lo más probable es que apunte al nirvana ...