Você está usando este comando
ln -s ../*/*txt TXT/
Se você estiver no diretório que contém a
, b
e TXT
, o shell não conseguirá expandir ../*/*txt
para corresponder a algo em a
ou b
. Você teria que usar */*txt
para isso, mas, em seguida, os links simbólicos dentro de TXT
seriam desativados em um nível e precisariam de outro ../
em seus caminhos relativos.
A solução mais fácil seria essa, mas você diz que quer evitar cd
( cd TXT && ln -s ../*/*txt . )
Outra solução exigiria a correção dos links, por sua vez
for f in */*txt
do
ln -s ../"$f" TXT
done
Lembre-se de que, como você tem seus diretórios de origem a
e b
no mesmo nível que TXT
, os curingas nas duas sugestões corresponderão a todos os três diretórios.