【发布时间】:2012-05-07 12:59:39
【问题描述】:
我有一个 shell 脚本,它列出文件夹的文件,然后对它们执行操作(打印成 PDF),但我经常得到一个空白 PDF。如果我删除生成的 PDF,新的 PDF 始终会正确生成。
我的印象是因为我的脚本在文件被完全复制之前开始打印(副本是通过操作系统资源管理器制作的,保存为,或者只是复制粘贴)。
当有人添加新文件时,绝对不是我来管理,副本来自使用网络共享的用户。
那么有没有办法拥有这样的东西?
for inputFile in `ls -l $SearchPattern | grep ^- | awk '{print $9}'`
do
//CHECK_THAT_THE_FILE_HAS_ALREADY_BEEN_FULLY_SAVED_ONCE
//DO_MY_PRINT_HERE
done
【问题讨论】:
-
for inputFile in $SearchPattern; do ...有什么问题? -
您能否设置一个 crontab 以每小时(或?)运行一次,并且只处理时间戳超过 5(或?)分钟的文件?祝你好运。
-
@glennjackman 正则表达式不是全局字符。大多数正则表达式不可能写成 glob 模式。
grep '^-'在ls -l输出中说“给我所有普通文件”。 -
@Jens,我会质疑“大多数正则表达式不可能写成 glob 模式”,确实很复杂,但是正则表达式
^-是 glob-*。无论如何,for inputFile in $SearchPattern; do [[ ! -f "$inputFile" ]] && continue; ...