无法将先前版本复制到新版本

无法将先前版本复制到新版本
# 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"/

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

在这个脚本这里就会出现问题了15_1:/mit.sas。实际上将需要 as 15_1/mit.sas.请快速浏览一下这个脚本。并建议应该在哪里更改确切的脚本。可以在 ksh 上编写这个脚本吗?

答案1

冒号来自ls命令,如果你用它代替,/bin/ls -d你应该去掉它们。

# 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"/

答案2

# 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"/

这应该可以满足您的需要(至少,我猜是这样,您仍然没有提供太多信息,您知道......)。

相关内容