Comportamento do asterisco na criação de links

0

Estou tentando criar links simbólicos para um conjunto de arquivos.

Suponha que eu queira vincular todos os arquivos com a extensão pdf de um origin_directory ao meu diretório atual.

Até agora eu tenho este comando:

ln -nfs origin_directory/*.pdf -t .

Isso funciona muito bem. O problema acontece se eu não tiver nenhum arquivo pdf no meu origin_directory , porque nesse caso um arquivo *.pdf é criado no meu diretório atual e é um link quebrado.

Existe uma maneira de evitar isso?

    
por marcosh 22.06.2015 / 22:55

2 respostas

1

no bash isso funcionaria

if [ -e origin_directory/*.pdf ] ; then ln -nfs origin_directory/*.pdf . ; fi

EDIT: Caso você tenha muitos arquivos

if [ $(ls origin_directory/*.pdf | wc -l) -gt "0" ] ; then ln -nfs origin_directory/*.pdf . ; fi
    
por 22.06.2015 / 23:03
1

Se estiver usando bash , execute primeiro

shopt -s failglob

Ou melhor, coloque seu .bashrc

Agora, sempre que você faz:

ln -nfs origin_directory/*.pdf -t .

Terá êxito ou falhará (com uma mensagem de erro e não fará nada).

do manual

failglob Se definido, os padrões que não correspondem aos nomes dos arquivos durante a expansão do nome do caminho resultam em um erro de expansão.

    
por 22.06.2015 / 23:18