Попробуйте это как/etc/fstab запись:
/path/to/device /mount/point/for/two2tbHDD ext4 umask=permissions,gid=peters_group_id,uid=peters_id 0 0
После того, как смонтированный, владение изменения:
chown peter: /mount/point/for/two2tbHDD
Затем измените использование корневого каталога peter
usermod -m -d /mount/point/for/two2tbHDD
Самый простой подход будет зависеть от того, насколько вы можете доверять своим пользователям. Если вам не нужно проверять, существуют ли оба файла, или что имена верны, или что-то еще, вам даже не нужен скрипт. Вы можете сделать это с помощью простого find
:
find /dir/to/source -name "ABC*" -mmin +5 -exec mv {} /destination/dir \;
Если вам нужно убедиться, что i) оба файла присутствуют и ii) оба имеют время модификации не менее 5 минут назад в системе GNU , вы можете сделать это:
#!/usr/bin/env bash
SOURCEDIR="/dir/to/source"
DESTDIR="/destination/dir"
for f in "${SOURCEDIR}"/*.xml; do
## Make sure the file exists and is a regular file (or symlink to regular file),
## and that its modification date is at least 5 minutes ago
[ -f "$f" ] && [ "$(( $(date +%s) - $(stat -c %Y "$f") ))" -ge 300 ] || continue
## Do the same for a file of the same name but with the .mxf extension.
mxf="${SOURCEDIR}/$(basename "$f" .xml).mxf";
[ -f "$mxf" ] && [ "$(( $(date +%s) - $(stat -c %Y "$no_ext") ))" -ge 300 ] || continue
## We will only get to this point if all of the above tests were successful
echo mv -v "$f" "$mxf" "$DESTDIR"
done
В системе GNU:
SOURCEDIR="/dir/to/source"
DESTDIR="/destination/dir"
TIMESTAMP_MINDIFF=300
timestamp="$(date +%s)"
find "$SOURCEDIR/AutoIngest" -maxdepth 1 -type f -name 'ABC*' ! -name '*.xml' |
while IFS= read -r file; do
xmlfile="${file}.xml"
test -f "$xmlfile" || continue
ts_file="$(date --reference="$file" +%s)"
ts_xmlfile="$(date --reference="$xmlfile" +%s)"
if [ "$((timestamp-ts_file))" -gt "$TIMESTAMP_MINDIFF" ] &&
[ "$((timestamp-ts_xmlfile))" -gt "$TIMESTAMP_MINDIFF" ]; then
echo mv "$file" "$xmlfile" "$DESTDIR/"
fi
done
Удалите echo
, если результат вам нужен.
С помощью zsh
:
cd /dir/to/source || exit
files=(ABC*(N.mm+5))
for f ($files[(k)*.xml]) {
(($files[(I)$f:r])) && print -r mv -v -- $f $f:r /destination/dir/
}
(удалите print -r
, если хотите).
Или чтобы не вызывать mv
несколько раз:
cd /dir/to/source || exit
files=(ABC*(N.mm+5))
tomove=()
for f ($files[(k)*.xml]) {
(($files[(I)$f:r])) && tomove+=($f $f:r)
}
print -r mv -- $tomove /destination/dir/