首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在目录内容更改时递增文件名的shell脚本(centos)

用于在目录内容更改时递增文件名的shell脚本(centos)
EN

Stack Overflow用户
提问于 2013-05-14 16:27:42
回答 1查看 2.8K关注 0票数 0

我有一个文件夹,里面有100张来自网络摄像头的照片。当网络摄像头发送新的图片时,我想让这张图片替换0号,并让所有其他的jpg上移一个数字。我设置了一个脚本,让inotify监视一个目录。当一个新文件被放入此目录时,脚本会对图片目录中的所有文件重新编号,重命名新上传的图片,并将其与其他文件放入文件夹中。这个脚本在某种程度上是有效的。“排序”,因为有时它会做它应该做的事情,有时它会抱怨文件丢失:

mv:无法统计`webcam1.jpg':没有这样的文件或目录

有时它只抱怨一个文件,有时是4个或5个。当然,我确保所有100个文件都在那里,并在脚本运行之前正确命名。脚本运行后,它抱怨的文件确实丢失了。这是脚本,在我测试的版本中,当然使用了目录的完整路径。

代码语言:javascript
复制
#!/bin/bash
dir1= /foo # directory to be watched
while inotifywait -qqre modify "$dir1"; do
cd /f002 #directory where the images are
for i in {99..1}
do
 j=$(($i+1))
 f1a=".jpg"
 f1="webcam$i$f1a"
 f2="test"
 f2="webcam$j$f1a"
 mv $f1 $f2 
done
rm webcam100.jpg
mv dir1/*.jpg /f002/webcam0.jpg 
done

我还需要实现一些错误检查,但就目前而言,我不明白它为什么会丢失文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 16:58:01

您正在执行以下mv命令:

代码语言:javascript
复制
mv webcam99.jpg webcam100.jpg
...
mv webcam1.jpg webcam2.jpg

缺少mv webcam0.jpg到webcam1.jpg。对"$dir“进行第一次更改时,/foo2中有以下文件:

代码语言:javascript
复制
webcam99.jp
...
webcam2.jpg
webcam0.jpg

使用后续的"$dir“更改,您将拥有以下内容:

代码语言:javascript
复制
webcam99.jp
...
webcam3.jpg
webcam0.jpg

换句话说,您忘记了将webcam0.jpg移动到webcam1.jpg。我会像这样修改你的脚本:

代码语言:javascript
复制
rm webcam99.jpg
for i in {98..0}
do
     j=$(($i+1))
     f1a=".jpg"
     f1="webcam$i$f1a"
     f2="test"
     f2="webcam$j$f1a"
     mv $f1 $f2 
done
mv dir1/*.jpg /f002/webcam0.jpg 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16538367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档