토런트 명명 규칙에 따라 읽기 쉬운 거대한 미디어 파일 저장소가 있습니다. 한순간에 필자는 해당 파일이 들어있는 폴더의 이름을 올바르게 지정했지만 bash 스크립트를 사용하여 모든 .avi, .mkv 등의 파일을 기본 미디어 디렉토리에 덤프하지는 않습니다.확장명을 유지하면서 폴더 내의 파일 이름을 폴더 이름으로 바꿉니다.
개요 : 현재 디렉토리 트리 :
Proper Movie Title/
->Proper.Movie.Title.2013.avi
->Proper.Movie.Title.2013.srt
Title 2/
->Title2[proper].mkv
Movie- Epilogue/
->MOVIE EPILOGUE .AVI
Media Movie/
->MEDIAMOVIE.CD1.mkv
->MEDIAMOVIE.CD2.mkv
. . .
원하는 디렉토리 트리 :이 비록
Proper Movie Title/
->Proper Movie Title.avi
->Proper Movie Title.srt
Title 2.mkv
Movie- Epilogue.avi
Media Movie/
->Media Movie.cd1.mkv
->Media Movie.cd2.mkv
이상적인 것, 내 주요 소원은 해당 파일 이름을 변경하고 상위 디렉토리로 이동해야하는 내 단 하나의 동영상 파일과 디렉토리입니다.
현재 나의 접근 방식은 .sh 파일에서 이중 for 루프를 사용하는 것이지만, 현재 내 머리 속에 새로운 bash 지식을 유지하는 데 어려움을 겪고 있습니다.
도움을 받으실 수 있습니다.
내 현재 코드 (단지 내부 동영상 파일에 대한 액세스 권한을 얻을 수 있습니다) :
find * -type f -maxdepth 1 | while read file
do
dirname="$(dirname "$file")"
new_name="${dirname##*/}"
file_ext=${file##*.}
if [ -n "$file_ext" -a -n "$dirname" -a -n "$new_name" ]
then
echo "mv '$file' '$dirname/$new_name.$file_ext'"
fi
done
find *
는 모든 항목에서 찾을 실행 말한다 :
#!/bin/bash
FILES=./*
for f in $FILES
do
if [[ -d $f ]]; then
INFILES=$f/*
for file in $INFILES
do
echo "Processing >$file< folder..."
done
#cat $f
fi
done
빠른 해결책은 불법 복제를 방지하는 것입니다! 영화를 구입하면 적절한 제목을 갖게됩니다. –
당신이 시도한 것을 보여주십시오, 우리는 당신을 위해 당신의 코드를 작성하지 않았습니다. – Barmar
내가 생각하고있는 코드가 추가되었습니다. – SWPhantom