0

好吧,我得到了一组文件夹,每个文件夹都包含一个来自 XBMC 的 *.nfo 文件(除了其他文件,如视频和图片等)。

我想通过 *.nfo 文件中的字符串重命名文件夹。这样一个*.nfo文件的相关内容:

...
    <title>Filmtitle</title>
...
    <year>2011</year>
...
    <director>Werner Herzog</director>
...

更新:这是来自 XBMC 的未经修改的原始 .nfo 文件

电影信息

find exec我用and尝试了很多grep,但我并没有真正得到任何可用的东西......

在上面的示例中,文件夹的名称应为“Filmtitel [2011, Werner Herzog]”

也许有人可以帮助我!

4

1 回答 1

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(如果您很高兴打印出的命令是正确的,只需取消注释该命令。)

于 2013-12-18T10:52:07.917 回答