bash 루프는 반복할 때마다 루프 변수의 선행 '.' 문자를 제거합니다.

bash 루프는 반복할 때마다 루프 변수의 선행 '.' 문자를 제거합니다.

지금까지는 공백과 작은따옴표만 처리해야 했기 때문에 그 주위에 큰따옴표를 넣었습니다.

#!/bin/bash
#ffmpeg -i Muppets\ Most\ Wanted_KBYUT_2017_07_08_18_56_00.wtv  -f ffmetadata metadata.txt
#ffmpeg -i Gene\ Roddenberry\'s\ Andromeda_COMET_2017_12_14_20_05_51.wtv  -f ffmetadata metadata1.txt
find . -type f | grep 'wtv$' | while read file; do
    echo "----"
    echo "----"
    echo "----"
    echo "$file"
    ls -alh "$file"
    echo "$file.txt"
    #ffmpeg -i "$file" -f ffmetadata "$file.txt"
done

인쇄해 보세요

stephen@B450-AORUS-M:~/Videos$ ./ffmetadata.sh 
./Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv
-rw------- 1 stephen stephen 7.9G Sep  6  2019 './Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv'
./Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv.txt
./Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv
-rw------- 1 stephen stephen 794M Dec 16  2017 "./Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv"
./Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv.txt

괜찮아 보였기 때문에 ffmpeg가 그 일을 하게 하려고 했고, 한 줄의 주석 처리를 제거함으로써 다음과 같은 결과를 얻었습니다.

stephen@B450-AORUS-M:~/Videos$ ./ffmetadata.sh 
./Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv
-rw------- 1 stephen stephen 7.9G Sep  6  2019 './Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv'
./Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv.txt
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
  ...
Input #0, wtv, from './Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv':
  Metadata:
    WM/MediaClassPrimaryID: db9830bd-3ab3-4fab-8a371a995f7ff74
    WM/MediaClassSecondaryID: ba7f258a-62f7-47a9-b21f4651c42a000
    Title           : Muppets Most Wanted
    ...
Output #0, ffmetadata, to './Muppets Most Wanted_KBYUT_2017_07_08_18_56_00.wtv.txt':
  Metadata:
    WM/MediaClassPrimaryID: db9830bd-3ab3-4fab-8a371a995f7ff74
    WM/MediaClassSecondaryID: ba7f258a-62f7-47a9-b21f4651c42a000
    Title           : Muppets Most Wanted
    ...
Stream mapping:
Press [q] to stop, [?] for help
size=       2kB time=-577014:32:22.77 bitrate=N/A speed=N/A    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded 
----
----
----
/Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv
ls: cannot access "/Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv": No such file or directory
/Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv.txt
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
...
  libpostproc    54.  7.100 / 54.  7.100
/Gene Roddenberry's Andromeda_COMET_2017_12_14_20_05_51.wtv: No such file or directory

첫 번째 파일은 작동하지만 두 번째 파일은 선행 점이 없어져 상대 경로가 절대 경로로 변경됩니다. 폴더에 있는 파일 3개를 시도했는데 그 중 2개가 작동했습니다. 4개 파일 2개 작업. 6개 파일 3개 작업.

답변1

선행 "."이 ffmpeg소비되고 있으며(스트림 맵을 요청할 때) 이는 read.

사용해야 하는 find기능 :

find . -type f -name '*wtv' -ls -exec ffmpeg -i {} -f ffmetadata {}.txt \;

이름이 로 끝나는 파일을 찾아 wtv세부 정보를 표시한 다음(GNU 확장자이므로 지원하지 않는 -print경우 find사용 ls) 실행합니다 ffmpeg.

관련 정보