Aqui é a resposta. Mas essa questão aponta para bash como o alvo do problema.
A explicação é que find
encontra "$HOME/MySymlinkedPath"
. É um link simbólico, não um diretório, então a descida recursiva pára por aí. Se a expressão corresponder a "$HOME/MySymlinkedPath"
(por exemplo, em find "$HOME/MySymlinkedPath" -name 'My*'
), então find
imprimiria isso como uma correspondência.
Como apontado, descobri que a maneira mais fácil e mais limpa de lidar com isso e corrigir todos os scripts é, em vez de:
find "$HOME/MySymlinkedPath" -name "run*.sh"
adicione apenas uma barra, para que find
inicie não a partir do link simbólico, mas do destino do link simbólico:
find "$HOME/MySymlinkedPath/" -name "run*.sh"
Como alternativa, passe a opção -H
para find
(observe que ela deve vir primeiro, antes dos caminhos) para informar que ela percorre os links simbólicos passados em sua linha de comando. (Isso é diferente de -L
, que diz find
para percorrer os links simbólicos encontrados durante a descida recursiva também.)
find -H "$HOME/MySymlinkedPath" -name "run*.sh"
E finalmente funcionou melhor aqui com -L
(por causa dos vários sistemas de arquivos que eu tenho link simbólico através de pastas). Mas gera cargas de mensagens de erro não problemáticas, por isso adicionei 2>/dev/null
; e também decidi criar este alias alias find='find -L'
:
find -L "$HOME/MySymlinkedPath" -name "run*.sh" 2>/dev/null