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경우 사용 )를 표시하고 해당 파일에서 실행됩니다.findlsffmpeg

관련 정보