Atualmente estou trabalhando em meus dotfiles e precisava encontrar uma maneira de encontrar arquivos com *.zsh
extensão dentro de uma pasta. E isso funcionou bem na minha máquina (osx, zsh).
DOT=$HOME/.dotfiles
find $DOT -follow -name "*.zsh"
! -path "$DOT/zsh/tools/*"
! -path "$DOT/backup/*"
Destinado a funcionar em uma única linha
O -follow
sinalizador diz ao find para seguir os links simbólicos e, neste caso, eu precisava disso, pois $HOME/.dotfiles
é um link que aponta para outro diretório em meu sistema.
Os símbolos de exclamação !
são negações e combinados com -path
tell find para ignorar essas pastas.
Exemplo
Eu o uso dentro do meu .zshrc
arquivo para criar *.zsh
arquivos dentro dos meus dotfiles
function ls-zsh-files {
find $DOT -follow -name "*.zsh"
! -path "$DOT/zsh/tools/*"
! -path "$DOT/backup/*"
}
# source all files with a .zsh config files
for zshfile in $(ls-zsh-files)
source $zshfile
Além disso, o ls-zsh-file
é disponibilizado para o shell, para que possa ser executado de qualquer lugar
zsh> ls-zsh-files
Isso é útil para solucionar problemas e descobrir quais *.zsh
arquivos são originados.