![bash - "for i in *.mp4" 파일이 없으면 "*.mp4"를 인쇄하지 않는 방법은 무엇입니까? [복사]](https://linux55.com/image/147831/bash%20-%20%22for%20i%20in%20*.mp4%22%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%97%86%EC%9C%BC%EB%A9%B4%20%22*.mp4%22%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
MediaInfo를 사용하여 미디어 파일의 해상도를 인쇄하는 스크립트를 작성 중입니다. 정확한 클리핑을 테스트하고 얻기 위해 Marvel 디렉토리를 하드코딩했습니다.
암호:
#!/bin/bash
for i in /mnt/D/tv/"Marvel (MCU)"/{*.mp4,*.mkv,*.avi,*.m4v}; do
mediainfo "$i" > temp
H=`cat temp | grep "Height" | cut -d ":" -f 2 | cut -c 2- | cut -d "p" -f 1`
W=`cat temp | grep "Width" | cut -d ":" -f 2 | cut -c 2- | cut -d "p" -f 1`
printf "%-50s %s x %s \n" "$(basename "$i")" "$W" "$H"
rm temp
done
산출:
1. Iron Man.mp4 1 920 x 800
10. Guardians of the Galaxy.mp4 1 280 x 536
...
8. Thor The Dark World.mkv 1 920 x 800
9. Captain America The Winter Soldier.mkv 1 280 x 534
*.avi x
*.m4v x
폴더에 .mp4, .mkv 파일만 있으므로 "*.avi", "*.m4v"가 인쇄됩니다. 찾을 수 없는 확장명 인쇄를 억제하는 방법은 무엇입니까?
답변1
nullglob
쉘 옵션 설정 : shopt -s nullglob
.from man bash
:
nullglob
일치하는 파일 이름이 없고 활성화된 쉘 옵션이 없으면 단어는 변경되지 않고 그대로 유지됩니다. 이 옵션이 설정되어 있고 일치하는 항목이 없으면nullglob
해당 단어가 제거됩니다.