使用元数据名称批量重命名文件

Posted

技术标签:

【中文标题】使用元数据名称批量重命名文件【英文标题】:Batch to rename files with metadata name 【发布时间】:2013-07-26 18:52:20 【问题描述】:

我最近不小心格式化了一个 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】:

至少我对你音乐的贡献……

这个想法是遍历所有找到的 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 标签,并解析它们以填充 4 个变量,使用“id3v2”工具(您需要先安装它)。清理标签以仅获取值,sed 用于修剪可能污染的前导空格。 * 然后创建(如果需要),在 /MUSIC/ 中带有艺术家姓名和专辑名称的树 * 然后将输入文件复制到新树中,并通过标签重命名它。

【讨论】:

以上是关于使用元数据名称批量重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

Bat批处理:批量重命名包含指定名称文件夹里的指定文件

文件夹批量改名?

如何批量重命名文件夹下的Excel文件

使用 perl 表达式批量重命名文件

怎么批量重命名多个文件夹里的图片

如何使用 R 根据顺序父文件夹名称批量重命名许多文件