我正在尝试设置一个监视脚本和一个 pdf 合并脚本的串联来检查我的扫描仪写入 pdf 的文件夹。第一个脚本的想法是监视文件夹,直到出现两个 pdf 文件,然后调用第二个脚本。现在的问题是 inotifywait 检测到文件何时创建并且按预期调用第二个脚本,但特别是对于较大的 pdf,这会导致失败,因为扫描仪可能仍会写入 pdf。我将 close_write 事件添加到 inotifywait 但我认为这会被忽略,因为 create 事件已经是 true。我添加了睡眠作为解决方法,但这不仅丑陋,而且在超过固定超时的更大文件上也会失败。检查两个文件是否已完全写入的最佳方法是什么?谢谢。
文件夹检查脚本:
#! /bin/bash
n=0
inotifywait -m -e create,close_write $1 | while read line
do
n=$(find $1 -type f | wc -l);
echo $n
if [ "$n" -eq "2" ] ; then
echo "found $n files"
sleep 5
./pdfMergeMove.sh $1 cleanup
n=0
fi;
done
Run Code Online (Sandbox Code Playgroud) 当用户使用onchange事件处理程序更改textarea框的内容时,我试图清除表单中的输入字段.我不知道我的错误在哪里,为什么它不起作用.
这是我的代码示例:JSBin
function clear()
{
document.getElementById('clearme').value= " " ;
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="clearme" value="123" readonly>
<textarea type="text" id="test2" onChange="clear()">some text here</textarea>
Run Code Online (Sandbox Code Playgroud)
我写了一个skript,可以根据在时间戳上记录的视频快速创建简短的预览剪辑,我发现以后值得检查一下以进行剪切。我的带有时间戳的文件是这样写的
FILE_NAME1#MM:SS MM:SS
FILE_NAME2#MM:SS MM:SS MM:SS MM:SS
Run Code Online (Sandbox Code Playgroud)
例:
MAH01728#02:47 03:34 03:44 05:00 06:08 06:55
Run Code Online (Sandbox Code Playgroud)
该脚本如下所示:
#!/bin/bash
while read f
do
file=$(echo $f | cut -d"#" -f1)
filename=${file}".MP4"
timestamps=$(echo $f | cut -d"#" -f2)
for time in $timestamps
do
ffmpeg -ss 00:${time}.0 -i "orig/${filename}" -c copy -t 10 "preview/${file}_${time}.MP4"
done
done < $1
Run Code Online (Sandbox Code Playgroud)
该脚本获得了我想要的预览的一半,另一方面,文件名被弄乱了,ffmpeg抱怨找不到该文件:
orig/714.MP4: No such file or directory
orig/00:58 01:25.MP4: No such file or directory
Run Code Online (Sandbox Code Playgroud)
因此,我修改了脚本以进行故障排除,并在ffmpeg命令前添加了回显-现在所有文件名都是正确的。我想念什么?
ffmpeg -ss 00:01:47.0 -i orig/MAH01714.MP4 -c copy -t 10 preview/MAH01714_01:47.MP4
ffmpeg -ss 00:02:00.0 …
Run Code Online (Sandbox Code Playgroud)