使用元数据名称批量重命名文件
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/ 中带有艺术家姓名和专辑名称的树 * 然后将输入文件复制到新树中,并通过标签重命名它。
【讨论】:
以上是关于使用元数据名称批量重命名文件的主要内容,如果未能解决你的问题,请参考以下文章