Sua expressão find
é simples o suficiente para ser replicada com globbing de shell bash:
shopt -s globstar nocaseglob
for book in $HOME/Coding/**/*javascript*.pdf
do
ln -s "$book" "js_books/$(basename "$book")"
done
Primeiro, dizemos ao bash para habilitar globbing de nomes de maiúsculas e minúsculas e poder recopiar subdiretórios por meio de **
, então fazemos um loop sobre todos os nomes de arquivos que correspondem ao padrão "(qualquer coisa) javascript (qualquer coisa) pdf". Para cada um desses nomes de arquivos, criamos um link simbólico em js_books.
Você omitiu o início de cada nome de arquivo, por isso eu apenas observarei que você desejará fornecer o caminho completo no for
loop para que o comando ln
crie links simbólicos válidos (ou use a quantidade adequada de ../
prefixos no destino do symlink). Eu substituí seu find ~
por $HOME/Coding
, apenas no caso de você estar usando um diretório inicial diferente.