install命令允许您在指定目标文件的所有权和权限时复制文件.
顺便说一下,你可能想避免parsing ls output,虽然我不确定什么是最惯用的解决方案.简单地忽略任何错误消息通常是一个坏主意,但也许这是最简单的. (这意味着,如果您缺少权限,则不会收到通知!)
install --group usergroup n18_????_??????????.txt /export/home/user 2>/dev/null &&
mv n18_????_??????????.txt "$archDir"
请注意,这里存在竞争条件.如果在执行安装时出现与通配符匹配的新文件,则mv将移除它们,即使它们未被复制.如果您可以使用仅限Bash的构造,请尝试以下方法:
list=( n18_????_??????????.txt ) # Expands the wildcard only once
if [ -e "${list[0]}" ]; then
install --group usergroup "${list[@]}" /export/home/user &&
mv "${list[@]}" "$archDir"
fi
这是一个更好的解决方案,因为它会显示任何警告或错误消息,而在正常情况下安静地运行.