파일 이름을 기준으로 해당 디렉토리로 파일을 이동하는 방법을 모르겠습니다. 기본적으로 tvshowname.season.episode.ext 또는 tv.show.name.season.episode.ext로 시작하는 TV 프로그램이 많이 있습니다. "표시 이름", "표시 이름 1", "표시 이름 2" 등의 디렉터리가 있습니다. 이름을 기반으로 파일을 같은 이름의 디렉터리에 복사하고 싶습니다.
현재 파일
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
지금 내가 겪고 있는 문제는 파일 이름 자체에서 처음 몇 단어 또는 최소한 프로그램 이름을 가져오는 방법입니다. 그런 다음 해당 이름을 기반으로 하는 디렉터리로 이동합니다. 각각은 The Flash, The Curse of Oak Island 등으로 나열됩니다.
답변1
어쩌면 이것이 시작하는 데 도움이 될 것입니다:
#!/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