好吧,我有一组文件夹,每个文件夹都包含一个来自XBMC的* .nfo文件(除了其他文件,如视频和图片等)。
我想通过* .nfo文件中的字符串重命名文件夹。 这样的* .nfo文件的相关内容:
...
<title>Filmtitle</title>
...
<year>2011</year>
...
<director>Werner Herzog</director>
...
更新:这是来自XBMC的未经修改的原始.nfo文件
我用find exec
和grep
做了很多尝试,但我没有真正得到任何可用的东西......
在上面的示例中,文件夹的名称应为“Filmtitel [2011,Werner Herzog]”
也许有人可以帮助我!
答案 0 :(得分:1)
尝试以下脚本。它从每个文件中提取标题,年份和导演,然后重命名目录:
find . -type f -name "*.nfo" -print0 | while IFS= read -r -d $'\0' file
do
title="$(sed 's|.*<title>\(.*\)</title>.*|\1|g' $file)"
year="$(sed 's|.*<year>\(.*\)</year>.*|\1|g' $file)"
director="$(sed 's|.*<director>\(.*\)</director>.*|\1|g' $file)"
dirName="${file%/*}"
newDirName="${dirName%/*}/$title [$year, $director]"
# mv "$dirName" "$newDirName"
echo mv "$dirName" "$newDirName"
done
(如果您对打印出的命令正确感到满意,则只需取消注释mv
命令。)