미디어 폴더의 루트에 있는 모든 mkv 파일을 각 mkv 파일의 하위 폴더로 이동하는 방법

미디어 폴더의 루트에 있는 모든 mkv 파일을 각 mkv 파일의 하위 폴더로 이동하는 방법

미디어 폴더의 루트에 있는 모든 mkv 파일을 끝에 .mkv 확장자가 있는 mkv 파일 이름과 동일한 이름을 가진 각 mkv 파일의 자체 하위 폴더로 이동하는 방법. 예제 home/incoming/media/는 mkv 파일이 루트 디렉터리에 있는 미디어 폴더입니다. 루트 디렉터리에 있는 example Ibica.festival.2020.mkv라는 파일은 home/incoming/media/Ibica.festival/ 폴더를 가져와야 합니다. Ibica .festival.2020 .mkv 약 300개의 파일이 있습니다. 일부는 중국어 이름이고 일부는 러시아어 키릴 문자입니다(상황이 변경될 경우). 파일 속성과 날짜는 새 폴더에 보존되어야 합니다.

시도했는데 오류가 발생했지만 명령은 성공했습니다. find . -name ".mkv" -exec sh -c 'mkdir "${1%.}" ; mv "$1" "${1%.*}" ' _ {} \; –

많은 파일이 일부 위치로 이동했지만 Ibica.festival.2020.mkv srt 파일은 Ibica.festival.2020.en.srt이고 info 파일은 Ibica와 같이 mkv 파일과 동일한 이름의 자막 및 정보 파일을 어떻게 포함할 수 있습니까? .festival .2020.en.info

      ///media/
             /Ibica.festival.2020.mkv
             /Ibica.festival.2020.hr.srt
             /Ibica.festival.2020.sr.srt
             /Ibica.festival.2020.br.srt
             /Ibica.festival.2020.info
     ///media/
             /exit festival 2019.mkv
             /exit festival 2019.hr.srt
             /exit festival 2019.sr.srt
             /exit festival 2019.en.srt
             /exit festival 2019.info

으로 옮겨야 한다

       ///media/
               /Ibica.festival.2020/
                                   /Ibica.festival.2020.mkv
                                   /Ibica.festival.2020.hr.srt
                                   /Ibica.festival.2020.sr.srt
                                   /Ibica.festival.2020.br.srt
                                   /Ibica.festival.2020.info

       ///media/
               /exit festival 2019/
                                  /exit festival 2019.mkv
                                  /exit festival 2019.hr.srt
                                  /exit festival 2019.sr.srt
                                  /exit festival 2019.en.srt
                                  /exit festival 2019.info
                                   

답변1

우선 다들 말씀하신대로 따라가야죠 질문 가이드, 그리고 스스로 조사해 보세요. 즉, 먼저 명령을 테스트한 다음 미디어 페이지에 적용해 볼 수 있습니다.

mkdir test && cd test
for i in {0..10};do touch file$i.mkv;done
ls | grep '\.mkv$' | while read line; do mkdir $(echo "$line" |sed 's/\.mkv$//');mv "$line" $(echo "$line" |sed 's/\.mkv$//') ;done

편집 후:

ls | grep '\.mkv$' | while read line
do
    folder_name=$(echo "$line" |sed 's/\.mkv//')
    mkdir "$folder_name"
    mv "$line" "$folder_name"
    mv "${folder_name}."* "$folder_name"
done

로 저장 script.sh하고 를 통해 실행할 수 있습니다. ./script.sh잊지 마세요 chmod +x ./script.sh. 꼭 저장하고 실행해보세요미디어 디렉토리에.

관련 정보