Tim*_*der 11 scripting bash stat
我正在尝试对一些文档进行 OCR 原位(从 Windows 共享上的 linux 命令行)。OCRing 的过程是 find ,我已经使用 find 命令正确地通过循环管道传输文件。
但是我需要保留原始时间戳以进行修改。我目前正在尝试使用 stat 和 touch 如下:
#!/bin/bash
OLDIFS=$IFS
IFS=$(echo -en "\n\b")
for f in `find /mnt/library/Libra/Libra/Ashfords -name "*.pdf"`
do
ORIGTS=`stat -c "%Y" $f`
sudo /opt/ABBYYOCR9/abbyyocr9 -rl English -pi -if $f -f PDFA -paemImageOnText -pafpr original -of $f
touch -t $ORIGTS $f
done
IFS=$OLDIFS
Run Code Online (Sandbox Code Playgroud)
当然 touch 命令失败了。单独运行命令我注意到“stat -c”是这样的:
1334758696
这就像我不知道的日期。我觉得我很接近,但无法弄清楚如何将我拥有的日期转换为触摸友好版本。它是某种形式的秒数吗?
Mik*_*kel 17
stat's输出是 Unix 时间戳,也称为自 Epoch 以来的秒数。
所有接受日期的 GNU coreutils 都允许您通过在时间戳前加上@.
所以试试这个
touch -d @$ORIGTS $f
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10313 次 |
| 最近记录: |