ln funciona na linha de comando, mas não no script

1

Eu tento isso:

for file in 'ls -1 ../files/file_??_??.dat' ; do echo "$file" ; ln "$file"  ; done

E para todos os arquivos, esse erro é exibido:

ln: failed to create hard link ‘./file_01_am.dat’ => ‘../files/file_01_am.dat’: No such file or directory

Mas na linha de comando isso funciona bem:

ln ../files/file_01_am.dat

Por que o ln falha no loop (também escrito diretamente na linha de comando) e não falha na linha de comando quando executado diretamente?

Apenas para informações, o seguinte comando também falha da mesma forma que o loop acima (este também tenta nomes de caminhos absolutos para uma boa medida):

find /media/files -name "file_??_??.dat" -print0 | xargs -0 -L 1 ln

Eu realmente não quero ter que vincular manualmente todos os arquivos!

O diretório files é um sistema de arquivos smb montado. O que é estranho é que o comando ln funciona bem se eu o emitir diretamente, mas não quando feito em um loop de qualquer tipo.

Por favor ajude.

    
por Aaron Harwood 28.05.2014 / 06:28

1 resposta

1

use isso:

find /media/file_??_??.dat -exec ln {} \;
    
por Taher Khorshidi 28.05.2014 / 08:37