Это будет делать то, что вы хотите (по крайней мере, на моем компьютере с Linux):
MTIME=$( stat now.txt | grep '^Modify:' | awk '{ print $2" "$3 }')
touch --date "$MTIME" now.txt
В качестве альтернативы, если у вас нет доступа к сенсорному Linux (но у вас есть дата GNU) (работает накаталог so
):
MTIME=$( stat so | grep '^Modify:' | awk '{ print $2" "$3 }')
TS=$( gdate --date "$MTIME" +%Y%m%d%H%M.%S )
touch -t $TS so
Если у вас нет доступа к дате GNU, вам нужно будет собрать временную метку из вывода статистики с чем-то вроде:
mtime=$( stat so | grep '^Modify:' | awk '{ print $2" "$3 }')
yy=$( echo $mtime | cut -f1 -d- )
MM=$( echo $mtime | cut -f2 -d- )
DD=$( echo $mtime | cut -f3 -d- | cut -f1 -d\ )
hhmmss=$(echo $mtime | awk '{ print $2 }' )
hh=$( echo $hhmmss | cut -f1 -d: )
mm=$( echo $hhmmss | cut -f2 -d: )
ss=$( echo $hhmmss | cut -f3 -d: | cut -f1 -d. )
echo ${yy}${MM}${DD}
echo ${hh}${mm}.${ss}
ts=${yy}${MM}${DD}${hh}${mm}.${ss}
touch -t $ts so
Имейте в виду, что установка времени изменяет время последнего изменения, поэтому вы не можете использовать эту технику для покрытия своих треков, если вы измените каталог и надеетесь установить дату в каталоге, чтобы избежать обнаружения.