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