外壳脚本通过内部文件中的信息重命名文件夹



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

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

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

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

电影.nfo

我用find execgrep尝试了很多,但我并没有真正得到任何薄的可用......

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

也许有人可以帮助我!

请尝试以下脚本。它从每个文件中提取标题、年份和导演,然后重命名目录:

find . -type f -name "*.nfo" -print0 | while IFS= read -r -d $'' 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命令即可。

最新更新