根据文件名的部分将文件移动到文件夹

根据文件名的部分将文件移动到文件夹

我正在尝试创建一个 bash 脚本,将下载的动漫文件移动到没有剧集编号的文件夹中。

文件名/文件列表例如:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

根据“节目名称”移动到新文件夹

[SubsHorrible] name of show
   [SubsHorrible] name of show - 00 [1080p].mkv
   [SubsHorrible] name of show - 01 [1080p].mkv
[SubsHorrible] name of show - name2 of show
   [SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
   [SubsHorrible] name of show - name2 of show - 01 [1080p].mkv
[SubsHorrible] name of show
   [SubsHorrible] name of show - 100 [1080p].mkv
   [SubsHorrible] name of show - 101 [1080p].mkv

任何帮助将不胜感激!

答案1

由于您没有提供任何脚本来提供帮助,请使用此行从文件列表中创建文件夹名称:

  1. 创建变量(或从文件名列表文件读取):filename="[SubsHorrible] name of show - 00 [1080p].mkv"
  2. 然后获取需要的部件:echo ${filename" "-*}

  3. 结果:[SubsHorrible] name of show,要创建文件夹,请执行echo ${filename%%" "-*} | xargs -d '\n' mkdir

解释::${filename%" "-*}从文件名后面删除直到点的所有内容" "-,然后返回其余所有内容。

对于给定的样本:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

返回:

[SubsHorrible] name of show
[SubsHorrible] name of show - name2 of show
[SubsHorrible] name of show

使用这个简单的脚本来创建文件夹:

#!/usr/bin/env bash

while IFS= read -r var
do
    mkdir "${var%" "-*}"
done < "$1"

用法:

./createfolder.sh list

将其整合到更大的脚本中。

  • 请参阅此内容以获取更多帮助:

https://www.cyberciti.biz/tips/bash-shell-parameter-substitution-2.html

相关内容