Copia o arquivo para dir usando curingas ou expressão regular no destino?

0

Eu quero executar este cp debian.master/abi/2.6.38*/amd64/generic debian.master/abi/2.6.38*/amd64/core2 , mas o bash dá erro no segundo * :

cp: cannot create regular file 'debian.master/abi/2.6.38*/amd64/core2': No such file or directory

Como posso copiar um arquivo no mesmo diretório, mas quando outro nome sem alterar o diretório nem gravar o nome inteiro da pasta?

    
por Juan Simón 06.05.2011 / 16:35

2 respostas

3

O erro é porque o shell tenta expandir * glob character antes de executar o comando, e o destino ainda não existe. Uma possibilidade para superar isso seria

cp debian.master/abi/2.6.38*/amd64/generic "$(eval echo debian.master/abi/2.6.38*/amd64)"/core2

Mais simplesmente você pode fazer:

( cd debian.master/abi/2.6.38*/amd64/; cp generic core2 )

Ou também

dir=debian.master/abi/2.6.38*/amd64/
cp "$dir"/generic "$dir"/core2
    
por enzotib 06.05.2011 / 16:45
0

Assumindo que debian.master/abi/2.6.38* se expande para vários diretórios:

for dir in debian.master/abi/2.6.38*/amd64; do cp $dir/generic $dir/core2; done
    
por glenn jackman 06.05.2011 / 17:24