使用python或bash按时间戳将音频文件复制到新文件夹

时间:2017-09-06 03:03:07

标签: python linux bash audio

您好我一直试图找到一种方法来恢复我们的存档服务器中的音频文件。它们分散在这个服务器的几个子目录中,命名模式有些不同。他们主要在" /媒体/录音" 。目录

以下是我所谈论的几个例子。

YYYY_XXX) XXX-XXXX_20151125-094056_10931-all
YYYYYYY_XXX-XXX-XXXX _20151013-094634_10896-all
YYYY_(XXX) XXX-XXXX_20151116-120923_10215-all
YYYYY_ XXXXXXXXXX_20160307-152940_11033-all

音频文件都是.wav和.mp3'并且它们都在文件名中有一个时间戳,我试图将其隔离并用作模型来切入YYYY / MM / DD来创建子目录。我已经阅读了其他一些尝试用bash组织文件的人,并试图让某些东西适应工作,似乎无法想出一个有效的脚本。请帮助。

我想从/ media / recordings / MP3和ORIG复制这些文件,但不包括/ media / recording / ORIG / sort to" / media / recordings / ORIG / sorted"作为目的地的位置。并按年/月/日子目录对这些文件进行排序。

这是一台使用python 2.6.6的旧版centos机器。我试图适应可以转到目录的东西并递归导航子目录,但我的时间仅限于解决此问题任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果我理解你的需要:

#!/bin/bash 
source_dir="/media/recordings"
dest_dir="/media/recordings/ORIG/sorted"
for file in ${source_dir}/{MP3,ORIG}/*; do
    etime=$(stat -c %Y "$file")
    fdate=$(date -d @$etime +"%Y-%m-%d")
    if [[ ! -d "$dest_dir/$fdate" ]]; then
        mkdir "$dest_dir/$fdate"
        mv "$file" "$dest_dir/$fdate"
    else
        mv "$file" "$dest_dir/$fdate"
    fi
done

该脚本将搜索source_dir / MP3和ORIG目录中的所有文件,并将它们移动到按日期排序的dest_dir / YYYY-MM-DD位置。文件和目录名称中不允许使用字符。

$ tree media/recordings/ORIG/sorted
├── 2014-10-30
│   └── song.mp3
├── 2015-11-07
│   └── song.wav
├── 2015-11-12
│   └── another_song.mp3
├── 2017-07-11
│   └── another_song.wav
├── 2017-09-06
│   ├── song-1.mp3
│   ├── song-2.wav
│   └── song-3.mp3