Eu quero determinar todos os links simbólicos quebrados dentro de um diretório.
Na ignorância de uma solução melhor, tentei este bash one-liner simples (a versão do bash é 4.2.46, que pode valer a pena mencionar porque é um pouco datada):
for f in $(ls); do test -L "$f" || continue; test -e "$f" || echo "$f deadlink"; done
Infelizmente, isso não funciona. Eu tentei identificar o erro e se eu executar isso
for f in $(ls); do test -L $f && echo "$f is a valid symlink"; done
nenhuma saída é produzida, apesar dos links simbólicos existentes e válidos. Se eu executar o mesmo comando substituído $f
pelo nome do arquivo real, funcionará. Também f=filename; test -L $f && echo "$f is a valid symlink";
funciona como esperado, então o problema parece ser o loop.
o que estou perdendo?