bash - 根据从文件名中提取的信息移动文件

时间:2014-05-23 16:45:13

标签: linux bash sorting move

尝试创建一个脚本,该脚本将获取电视节目视频文件并将其移动到我的电视目录层次结构中的正确文件夹中。

即。示例文件名:

archer.2009.s01e01.publichd.mkv
archer.s05e10.dimension.mkv

我希望这些分别转移到:电视/弓箭手/第1季/电视/弓箭手/第5季/如果它们尚不存在则创建它们。

这是我到目前为止所拥有的,现在它仅根据一个特定节目的季节进行排序,Archer。计划在我开始工作后扩展它:

#!/bin/bash

for season in 01 02 03 04 05 #06 07 08 09 10 11 12 13 14 15 16
do

    echo 'Season ' $season
    #find -iname *archer*s$season\*.*
    var=$(find -iname *archer*s$season\*.*)
    var=$(echo $var | cut -c 3-)
    echo $var

    var2=$(sed "s/0//" <<< $season)
    var3=$(echo "Season $var2/")
    echo $var3

    if [[ -z "$var" ]]
    then
        : 
    else
        mkdir -p /home/adam/Downloads/Television/Archer/$var3;
        mv "./$var" "/home/adam/Downloads/Television/Archer/$var3"
    fi

done

我在创建/移动文件到$ var3目录变量时遇到问题。它确实在名称中有一个空间,我知道它给了我一些问题。我已经有了这种格式的大型节目库,所以我宁愿不改变它。

任何帮助都会受到赞赏 - 我知道这个剧本非常原始,我只是把它拼凑在一起。

1 个答案:

答案 0 :(得分:2)

使用时需要在var3周围加上引号。

mkdir "$var3"