如何将所有 mkv 文件从媒体文件夹的根目录移动到每个 mkv 文件自己的子文件夹

如何将所有 mkv 文件从媒体文件夹的根目录移动到每个 mkv 文件自己的子文件夹

如何将所有 mkv 文件从媒体文件夹的根目录移动到每个 mkv 文件自己的子文件夹,其名称与 mkv 文件名相同,末尾带有 .mkv 扩展名。示例 home/incoming/media/ 是 mkv 文件驻留在根目录中的媒体文件夹,根目录中命名示例 Ibica.festival.2020.mkv 的文件应获取文件夹 home/incoming/media/Ibica.festival/Ibica.festival.2020 .mkv 我有大约 300 个文件,一些文件带有中文名称,一些文件带有俄语西里尔字母(如果情况发生变化的话)。文件属性和日期应保留在新文件夹中。

我尝试过,但遇到了一些错误,但该命令取得了一些成功 find . -name ".mkv" -exec sh -c 'mkdir "${1%.}" ; mv "$1" "${1%.*}" ' _ {} \; –

很多文件移动到了一些位置,但我如何包含与 mkv 文件同名的字幕和信息文件,如 Ibica.festival.2020.mkv srt 文件将是 Ibica.festival.2020.en.srt 和信息文件将为 Ibica.festival.2020.en.info

      ///media/
             /Ibica.festival.2020.mkv
             /Ibica.festival.2020.hr.srt
             /Ibica.festival.2020.sr.srt
             /Ibica.festival.2020.br.srt
             /Ibica.festival.2020.info
     ///media/
             /exit festival 2019.mkv
             /exit festival 2019.hr.srt
             /exit festival 2019.sr.srt
             /exit festival 2019.en.srt
             /exit festival 2019.info

应移至

       ///media/
               /Ibica.festival.2020/
                                   /Ibica.festival.2020.mkv
                                   /Ibica.festival.2020.hr.srt
                                   /Ibica.festival.2020.sr.srt
                                   /Ibica.festival.2020.br.srt
                                   /Ibica.festival.2020.info

       ///media/
               /exit festival 2019/
                                  /exit festival 2019.mkv
                                  /exit festival 2019.hr.srt
                                  /exit festival 2019.sr.srt
                                  /exit festival 2019.en.srt
                                  /exit festival 2019.info
                                   

答案1

首先,就像大家说的,你必须遵循 提问指南,并自己做一些研究。也就是说,您可以尝试先测试该命令,然后将其应用到您的媒体页面:

mkdir test && cd test
for i in {0..10};do touch file$i.mkv;done
ls | grep '\.mkv$' | while read line; do mkdir $(echo "$line" |sed 's/\.mkv$//');mv "$line" $(echo "$line" |sed 's/\.mkv$//') ;done

编辑后:

ls | grep '\.mkv$' | while read line
do
    folder_name=$(echo "$line" |sed 's/\.mkv//')
    mkdir "$folder_name"
    mv "$line" "$folder_name"
    mv "${folder_name}."* "$folder_name"
done

您可以将其另存为 ascript.sh并通过 运行它./script.sh,不要忘记chmod +x ./script.sh。确保保存并运行它在媒体目录内

相关内容