Não é possível copiar a versão anterior para a versão mais recente

0
# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(echo $(ls [1-9]*([0-9])_[0-9] | sort -rn | head -n 2))
# if there are no other files and directories you can use "ls |" in the line above
newer="${dirs% *}"
prior="${dirs#* }"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/

Resultado: cp: cannot access 15_1:/mit.sas: No such file or directory .

Aqui, neste problema de script, haverá um aumento de 15_1:/mit.sas . Na verdade, precisará de 15_1/mit.sas . Por favor, faça uma rápida visualização neste script. E sugira onde deve mudar o roteiro exato. É possível escrever este script em ksh?

    
por jos 14.05.2013 / 13:59

2 respostas

1

Os dois pontos vêm do comando ls , se você substituir por /bin/ls -d , você deve se livrar deles.

# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(echo $(/bin/ls -d [1-9]*([0-9])_[0-9] | sort -rn | head -n 2))
# if there are no other files and directories you can use "ls |" in the line above
newer="${dirs% *}"
prior="${dirs#* }"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/
    
por 14.05.2013 / 14:10
0
# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(ls -d [1-9]*([0-9])_[0-9] | sort -rn | head -n 2)
# if there are no other files and directories you can use "ls |" in the line above
newer="$(echo $dirs | head -n 1)"
prior="$(echo $dirs | tail -n 1)"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/

Isso deve lhe dar o que você precisa (pelo menos, eu acho que você ainda não fornece muita informação, você sabe ...).

    
por 14.05.2013 / 14:15