Просто используйте nice
(вместо renice
). Например:
nice -n 10 command
Это будет работать command
с низким приоритетом.
stat's
вывод является меткой времени Unix, также названной секундами с Эпохи.
Весь GNU coreutils, которые принимают дату, позволяет Вам помещать метку времени вместо этого путем добавления префикса метки времени @
.
Так попробуйте это
touch -d @$ORIGTS $f
touch
может использовать метку времени файла с помощью -r
опция. Вы могли бы хотеть произвести в другой файл (я принимаю ниже этого -if
входной файл и -of
выходной файл),
for f in ...; do
sudo /opt/ABBYYOCR9/abbyyocr9 ... -if $f ... -of $f.new
touch -r $f $f.new
mv $f.new $f
done
IFS=$(echo -en "\n\b")
Так как Вы принимаете оболочку с echo -e
, и Вы имеете, избивают Вашу строку хижины так или иначе, можно использовать IFS=$'\n\b'
. Создание клавиши Backspace разделитель является довольно странным. Вам не нужно IFS
поскольку, что Вы делаете так или иначе.
OLDIFS=$IFS
…
IFS=$OLDIFS
Обратите внимание, что это восстанавливает старое значение IFS
только если IFS
был первоначально установлен. Если IFS
был первоначально сброшен, это устанавливает IFS
к пустой строке, которая полностью отличается. В ksh, ударе или zsh, если необходимо установить IFS
временно, можно написать код в функции и сделать IFS
локальный для этой функции. В других оболочках необходимо быть осторожны относительно случая сброса.
`find /mnt/library/Libra/Libra/Ashfords -name "*.pdf"`
Никогда не используйте замену команды относительно вывода find
.
$IFS
. Если Вы устанавливаете IFS
к новой строке затем это разделяет вывод в новых строках, но Вы все еще не можете обработать имена файлов, содержащие новые строки.A[12].pdf
, A1.pdf
и A2.pdf
, Вы закончите с A1.pdf A2.pdf A1.pdf A2.pdf
. Можно выключить globbing с set -f
(и назад на с set +f
), но здесь (как большая часть времени) правильный путь не состоит в том, чтобы использовать замену команды.Используйте -exec
аргумент find
(или если Ваша система имеет -print0
, можно использовать find … -print0 | xargs -0 …
вместо этого; это только полезно для действия на несколько файлов сразу при необходимости в мобильности к древним системам Linux или существующим системам OpenBSD, которые имеют -print0
но нет -exec … {} +
).
ORIGTS=`stat -c "%Y" $f` # [transform $f] touch -t $ORIGTS $f
Обратите внимание пропавших без вести двойных кавычек вокруг $f
(они не необходимы, если это результаты разделения, и Вы не изменились IFS
с тех пор и globbing выключен, но действительно, всегда помещает двойные кавычки, если Вы не знаете, почему Вы не можете оставить их на).
Это неуклюже и непортативно (stat
не существует во всех системах, и его аргументы отличаются через различные системы, где это существует). touch
имеет портативную опцию установить файл на метку времени другого файла: touch -r REFERENCE_FILE FILE
. Я рекомендовал бы один из двух подходов вместо этого:
touch -r
назначать дату нового файла и наконец перемещать новый файл в место. Лучше удостовериться, что вывод прекрасен, прежде чем что-либо произойдет с входом; иначе, если преобразование будет прервано по какой-либо причине (например, сбой питания), то Вы потеряете данные.touch -r
дважды: однажды для сохранения даты исходного файла на пустом временном файле (который будет автоматически создан), с другой стороны после преобразования для восстановления даты с помощью временного файла.Таким образом:
find /mnt/library/Libra/Libra/Ashfords -name '*.pdf' \
-exec sh -c 'transform "$0" to "$0.tmp" && touch -r "$0" "$0.tmp" && mv -f "$0.tmp" "$0"' {} \;
Почему-то пропустил ответ про touch -r
; если по какой-то странной причине у вас нет GNU coreutils’ stat
, как в принятом ответе, и вы не можете использовать touch -r
, вот как получить метку времени в удобном дляtouch
-формате с помощью BSD -, например stat
.
% /usr/bin/stat -f '%Sm' johnson
Oct 23 22:51:00 2012
% /usr/bin/stat -t '%Y%m%d%H%M.%S' -f '%Sm' johnson
201210232251.00
% touch foo
% touch -t $(/usr/bin/stat -t '%Y%m%d%H%M.%S' -f '%Sm' johnson) foo
% /usr/bin/stat -f '%Sm' foo
Oct 23 22:51:00 2012
Но на самом деле просто используйтеtouch -r
:
% touch foo
% touch -r johnson foo
% /usr/bin/stat -f '%Sm' foo
Oct 23 22:51:00 2012