Algum tipo de wrapper lidaria com esse cenário incomum. O exemplo foi testado como funcionando, mas tem opções mínimas (nenhuma opção tradicional / bin / mv pode ser passada na linha de comando). Salve abaixo em um script e execute-o (com bash script
ou chmod +x script
e execute ./script
):
#!/bin/bash
helpusage() {
echo "Usage: $0 targetdir files"
exit
}
getperms() {
/usr/bin/stat --printf="%a" "$1"
}
getowner() {
/usr/bin/stat --printf="%U" "$1"
}
getgroup() {
/usr/bin/stat --printf="%G" "$1"
}
if [[ $# -ge 2 ]]
then
if [[ -d "$1" ]]
then
targetdir=$1
shift
else
helpusage
fi
else
helpusage
fi
td_perms=$(getperms "$targetdir")
td_owner=$(getowner "$targetdir")
td_group=$(getgroup "$targetdir")
/bin/mv --target-directory="$targetdir" "$@" && \
for file in "$@"
do
file="$targetdir/$file"
/bin/chmod "$td_perms" "$file"
/bin/chown "$td_owner":"$td_group" "$file"
done