미디어 폴더의 루트에 있는 모든 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
. 꼭 저장하고 실행해보세요미디어 디렉토리에.