Uau, algumas soluções complexas aqui! Acho que tudo o que você precisa fazer é isto:
find ./\$my\'dir -type d -exec sh -c 'ls "$1"' sh {} \;
Em vez de colocar os argumentos na sequência de comandos sh , use-os como argumentos para sh . Observe que o segundo sh é o valor de $0 , tudo depois disso é um argumento posicional.
Quanto ao seu problema completo de encontrar diretórios que não contenham PDFs, você sempre estará melhor usando find para esse tipo de coisa, em vez de ls . Isso deve estar perto do que você está procurando:
find . -type d \
-exec sh -c '[ "$(find "$1" -maxdepth 1 -type f -iname "*.pdf")" = "" ]' sh {} \; \
-print