Shell脚本将照片移动到日期为YYYYMMDD的文件夹中

时间:2015-05-02 10:43:27

标签: shell date move directory bulk

我有一个IP摄像头,可以每分钟将照片发送到PC上的文件夹(Linux)

(mv *20150501* 20150501)

相机发送以下文件名: Schedule_的 20150501 -103642.jpg

我想制作一个shell脚本:

  • 在YYYYMMDD格式的日期文件名中查找,如果不存在,请使用该编号格式化一个文件夹,并将包含该编号的所有文件移动到此文件夹中。
  • 进入每个文件夹并检查是否有.MP4如果没有执行我从某人修改过的脚本。

mencoder" mf://*.jpg" -mf fps = 12:type = jpg -ovc lavc -lavcopts vcodec = mpeg4:mbd = 2:trell:vbitrate = 7000 -oac copy -o Zeitraffer` 20150501 .mp4

基础文件夹是:快照

子文件夹:快照/(日期+%YYYY%mm%dd)

到目前为止,我通过mv手动完成所有操作,然后进入文件夹并修改时间流逝的脚本。 :-( 到目前为止,我有一个脚本按日期至少制作大量文件夹:

#!/bin/bash

read -p "Geben Sie den ersten Ordner an (JJJJMMTT): " now  
read -p "Geben Sie den letzten Ordner an (JJJJMMTT): " end  

while [ "$now" != "$end" ] ;
do
now=`date +"%Y%m%d" -d "$now +1 day"`;
mkdir $now
done 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先, 感谢你的每一个评论! REGEX对我来说太难了。谢谢你。 经过大量的研究,今天我将很多拼图部分组合在一起。 我得到的是这个: 唯一的事情是,如果已经存在文件夹,则由于while函数而不会复制相应的文件。但是,由于剧本在今天前一天停止,这应该不是问题。 然后我为这个案子制作了两个剧本,我忘了制作一部电影。另一个检查MP4文件是否已存在于plex文件夹中,如果没有则复制该文件。 实际上我只是修改了脚本。

" normal"的脚本工作:

#!/bin/bash
read -p "Geben Sie den ersten Ordner an (JJJJMMTT): " begin  
end=$(date +%Y%m%d -d "-1 day")                                       
 while [ $begin != $end ] 
do
begin=`date +"%Y%m%d" -d "$begin +1 day"`
if [ ! -d $begin ]  # Prüfen, ob es den Ordner gibt.                                      
then
    /bin/mkdir $begin 
    echo "Ordner $begin erstellt"
    mv *$begin*.jpg $begin  
echo "Bilder vom $begin verschoben nach $begin"
 cd $begin  
 $(mencoder mf://*.jpg -mf fps=12:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o Zeitraffer$begin.mp4)
  cp Zeitraffer$begin.mp4 /Plexfolder/ 
 echo "Kopiere Zeitraffer$begin.mp4 nach /RAID5/filme/Kamera/"
 cd ..
 fi
 done 

检查MP4文件是否存在的脚本(如果不存在)并将其复制到plex文件夹:

#!/bin/bash

  read -p "Geben Sie den ersten Ordner an (JJJJMMTT): " begin  
  end=$(date +%Y%m%d -d "-1 day")       
  while [ $begin != $end ] 
  do
  begin=`date +"%Y%m%d" -d "$begin +1 day"`
  if [ -d $begin ] 
  then
  cd $begin 
  if [ ! -f Zeitraffer$begin.mp4 ] #Prüfen, ob es eine MP4 Datei gibt 
  then
  $(mencoder mf://*.jpg -mf fps=12:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o Zeitraffer$begin.mp4)
  cp Zeitraffer$begin.mp4 /plexfolder/ 
  echo "Kopiere Zeitraffer$begin.mp4 nach /plexfolder/"
  fi  
  cd ..
  fi
  done 

将丢失的MP4文件复制到plex文件夹:

#!/bin/bash
read -p "Geben Sie den ersten Ordner an (JJJJMMTT): " begin  
end=$(date +%Y%m%d -d "-1 day") 
while [ $begin != $end ] 
do
begin=`date +"%Y%m%d" -d "$begin +1 day"`
if [ -d $begin ]          
then
cd $begin 
if [ ! -f "/plexfolder/Zeitraffer$begin.mp4" ] 
then
cp Zeitraffer$begin.mp4 /RAID5/filme/Kamera/
echo "Kopiere Zeitraffer$begin.mp4 nach /RAID5/filme/Kamera/"
fi  
cd ..
fi
done 

你知道什么是最好的??? 真的行!!! 我不敢相信我做到了!!!

非常感谢你的帮助!!!