批量重命名具有元数据名称的文件

时间:2013-07-26 13:20:33

标签: bash batch-file metadata data-recovery

我最近意外地格式化了2TB硬盘mac os jounaled! 我能够使用Data Rescue 3恢复文件,唯一的问题是程序没有给我这些文件,根树和名称。

例如我有

|-Music
||-Enya
|||-Sonadora.mp3
|||-Now we are free.mp3
|-Documents
||-CV.doc
||-LetterToSomeone.doc
...and so on

现在我得到了

|-MP3
||-M0001.mp3
||-M0002.mp3
|-DOCUMENTS
||-D0001.doc
||-D0002.doc

因此,掌握大量数据需要花费几个世纪的时间才能手动打开,看看它是什么并重命名。

是否有一些批次可以扫描我的所有子文件夹并使用以前的名称?或许通过元数据?

或者您是否知道一个更好的工具,它将保留相同的文件名称和路径(如果必须支付则无关紧要,总是解决方案:P)

谢谢

1 个答案:

答案 0 :(得分:4)

至少我对你的贡献......

我们的想法是浏览找到的所有MP3文件,并根据他们的ID3标签进行分发。

我会做类似的事情:

for i in `find /MP3 -type f -iname "*.mp3"`;
do
   ARTIST=`id3v2 -l $i | grep TPE1 | cut -d":" -f2 | sed -e 's/^[[:space:]]*//'`; # This gets you the Artist
   ALBUM=`id3v2 -l $i | grep TALB | cut -d":" -f2 | sed -e 's/^[[:space:]]*//'`; # This gets you the Album title
   TRACK_NUM=`id3v2 -l $i | grep TRCK | cut -d":" -f2 | sed -e 's/^[[:space:]]*//'`; # This gets the track ID/position, like "2/13"
   TR_TITLE=`id3v2 -l $i | grep TIT2 | cut -d":" -f2 | sed -e 's/^[[:space:]]*//'`; # Track title
   mkdir -p /MUSIC/$ARTIST/$ALBUM/;
   cp $i /MUSIC/$ARTIST/$ALBUM/$TRACK_NUM.$TR_TITLE.mp3
done

基本上:  *它在/ MP3中查找所有“.mp3”文件  *然后分析每个文件的ID3标签,并使用“id3v2”工具解析它们以填充4个变量(您需要先安装它)。清除标签只获取值,sed用于修剪可能污染的前导空格。  *然后创建(如果需要),/ MUSIC /中具有艺术家姓名和专辑名称的树  *然后将输入文件复制到新树,并通过标记重命名它。