2012-06-17 12 views
7

Ho una cartella con alcuni dotfiles per cui vorrei creare symlink. Non riesco a vedere un modo semplice per farlo.Bash find, exclude parent?

ls -a ~/dotfiles includerà i dotfile, ma anche . e ..

find ~/dotfiles -maxdepth 1 includerà i dotfile, ma anche ~/dotfiles

risposta

13

In base al commento MvanGeest’s sembra funzionare.

find ~/dotfiles -maxdepth 1 -mindepth 1 

questo sembra di fare il lavoro così

ls -A ~/dotfiles 
+1

+1 stavo per inviare una risposta con 'opzione -A del ls' fino a quando ho visto questo. – chepner

+0

@StevenPenny Stavo usando BSD find piuttosto che GNU find, hai ragione, e cambierò i miei script di conseguenza. Grazie per la segnalazione. –

1

Sembra che si sta cercando di trovare i file di punti, vale a dire. File che iniziano con un "." e avere un secondo carattere che non è un ".". Questo dovrebbe fare il lavoro:

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

per collegare tutti i file trovati a/path/to/dir:

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

nota che "$ PWD" produce un percorso assoluto, come link simbolici per i percorsi relativi saranno molto probabilmente punta al nirvana ...