수정 시간이 미래(2098 및 2097)인 약 50개의 mkv 파일을 찾았습니다. 각 mkv 파일과 동일한 하위 폴더에 올바른 날짜와 동일한 이름을 가진 .srt 파일이 표시됩니다.
touch
가장 오래된 srt를 읽고 동일한 하위 폴더에 있는 mkv의 마지막 수정 날짜를 해당 날짜로 변경하는 명령을 어떻게 실행합니까 ?
home/incoming/media/berlin.festival.2019/berlin.festival.2019.mkv home/incoming/media/Exit.festival.2022/Exit.festival.2022.mkv
$ for f (*/.mkv) touch -r $f:r.srt
-- $f는 캡처할 수 없으며 미디어 폴더의 루트에 있는 캡처만 캡처할 수 있습니다.
나는 다음과 같은 것을 시도했습니다
$ for file in $(find /home/loop/test/*.mkv -type f) do touch -r $f:r.srt -- $f
내 테스트 폴더에 있지만 작동하지 않습니다.
우분투는 운영 체제입니다.
~에서하위 폴더의 마지막 수정 시간을 그 안에 있는 가장 오래된 파일의 마지막 수정 시간으로 변경합니다., 폴더의 날짜를 수정했습니다
for dir in /home/loop/test/*(NF); do
oldest=( $dir/*.(|srt|)(N.Om[1]) )
if (( $#oldest )) touch -r $oldest -- $dir
done
ls -l
이제 srt 파일의 날짜를 사용하여 폴더를 수정했으므로 폴더의 날짜가 완벽합니다.
그런데 srt 파일의 날짜를 기준으로 하위 폴더 내의 mkv 파일의 날짜를 변경하고 싶습니다.
/home/loop/test # ls -l drwxrwxrwx 2 loop loop 4096 Jul 23 2019 berlin.festival.2019 drdrwxrwx 2 loop loop 4096 Jan 5 2019 Belgum.2018 drwxrwxrwx 2 loop loop 4096 Feb 21 2020 Denmark.2019 drwxrwxrwx 2 loop loop 4096 Oct 3 2020 Exit.festival.2022
답변1
의 디렉토리 zsh
에서 :/home/loop/test
for mkv in **/*.mkv(Nms-1); do
srt=( $mkv:r(.*|).srt(N.Om[1]) )
if (( $#srt )) touch -r $srt -- $mkv
done
m
마지막으로 수정된 모든 파일을 반복하고 1
s
(나중에 수정 시간이 있는 파일을 가져오는 것입니다) 동일한 루트 이름을 가진 파일을 찾고 srt
(앞에 선택 사항이 있음) 가장 오래된 파일을 이동하고(수정 시간을 기준으로 rder로) mtime합니다. mtime이 mkv에 복사되었습니다..xx
Om
O
(그런데 당신의oldest=( $dir/*.(|srt|)(N.Om[1]) )
해야한다 oldest=( $dir/*.srt(N.Om[1]) )
.(|srt|)
방법아무것도 없다또는 srt
또는아무것도 없다).