Como eu poderia criar vários links simbólicos para vários diretórios, convenientemente

4
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v122 -> /home/files/video122
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v123 -> /home/files/video123
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v124 -> /home/files/video124
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v125 -> /home/files/video125
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v126 -> /home/files/video126
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v127 -> /home/files/video127
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v128 -> /home/files/video128
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v129 -> /home/files/video129
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v130 -> /home/files/video130
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v131 -> /home/files/video131
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v132 -> /home/files/video132
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v133 -> /home/files/video133
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v134 -> /home/files/video134
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v135 -> /home/files/video135
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v136 -> /home/files/video136
lrwxrwxrwx  1 deploy users    20  1월 23 18:15 v137 -> /home/files/video137

Estes são links simbólicos.
Se novos video138 ~ video150 volumes estiverem montados, preciso fazer links v138~v150 disso.
Você poderia imaginar uma magia bash? (Eu tentei usar brace expansion , mas não consegui fazer funcionar). Seria muito melhor se o script de mágica pudesse criar os links simbólicos automaticamente, com a detecção da montagem dos volumes.

    
por Benjamin 23.01.2013 / 11:07

2 respostas

8

Experimente um simples for loop

for Num in {138..150}; do
  ln -s "/home/files/video$Num" "v$Num"
done
    
por 23.01.2013 / 11:16
4

com zsh :

autoload zmv
alias zln='zmv -L'
zln -s '/home/files/video(*)' 'v$1'

ou

zln -s '/home/files/video(<138-150>)' 'v$1'

Caso contrário, com zsh ou versões recentes do bash ou ksh93 suportando {x..y} , você poderia fazer:

vln() for i do
  ln -s "/home/files/video$i" "v$i"
done

vln {138..150}
    
por 23.01.2013 / 11:12