我不确定如何根据文件名将文件移动到各自的目录中。基本上,我有一堆电视节目,例如tvshowname.season.episode.ext或tv.show.name.season.episode.ext。我有名为Show Name,Show Name1,Show Name2等的目录。我想根据文件名将文件复制到同名目录中。
当前文件
Game of Thrones
Shooter
The Curse of Oak Island
Van.Helsing.S01E08.Little.Things.720p.WEB-DL.DD5.1.H264-DRACULA.mkv
Van.Helsing.S01E08.Little.Things.720p.WEB-DL.DD5.1.H264-DRACULA.mp4
Real Vikings
Van Helsing
到目前为止,我已经做到了
#!/bin/bash
for FILE in "`ls *.{mp4,mkv}`"
do
filename=$(basename "$FILE")
extension=${filename##*.}
filename=${filename%.*}
echo $filename
done
我现在遇到的问题是如何从文件名本身获取前几个单词或至少显示节目的名称。然后根据该名称将其移动到目录中。每个目录都列为“ Flash”,“橡树岛的诅咒”等。
也许这可以帮助您开始:
#!/bin/bash
for f in *.{mp4,mkv} # no need to use ls.
do
filename=${f##*/} # Use the last part of a path.
extension=${f##*.} # Remove up to the last dot.
filename=${filename%.*} # Remove from the last dot.
dir=${filename#tv} # Remove "tv" in front of filename.
dir=${dir%.*} # Remove episode
dir=${dir%.*} # Remove season
dir=${dir//.} # Remove all dots.
echo "$filename $dir"
if [[ -d $dir ]]; then # If the directory exists
mv "$filename" "$dir"/ # Move file there.
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句