![sed 정규식은 ()를 사용하여 확장자 없이 파일 이름을 가져옵니다.](https://linux55.com/image/105192/sed%20%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%80%20()%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%99%95%EC%9E%A5%EC%9E%90%20%EC%97%86%EC%9D%B4%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%B5%EB%8B%88%EB%8B%A4..png)
나는 밧줄을 가지고 있습니다 GameOfThronesS01E05.mkv
. 정규식과 함께 GameOfThronesS01E05
사용하고 싶습니다 sed
.
나는 노력했다
echo GameOfThronesS01E05.mkv | sed 's/\(.+\)\.mkv$/\1/'
하지만 소용없어
답변1
GNU 유틸리티가 있는 시스템을 사용하는 경우 언제든지 다음을 basename
사용하여 확장 기능을 제거할 수 있습니다.
$ basename -s ".mkv" GameOfThronesS01E05.mkv
GameOfThronesS01E05
그 외에도 Python은 항상 좋은 선택입니다.
$ python -c 'import sys;print sys.argv[1][:-4]' GameOfThronesS01E05.mkv
GameOfThronesS01E05
답변2
더 간단한 해결책은 다음과 같습니다.
echo GameOfThronesS01E05.mkv | sed -n 's/.mkv//p'
답변3
@don_crissti에게 감사드립니다. 이것은 내 MKV에서 MP4로의 변환기입니다.
$vi /usr/local/bin/MKVtoMP4
for entry in *
do
if [[ $entry =~ .+\.mkv$ ]]; then
FILENAME=`echo $entry | sed -E 's/(.+)\.mkv$/\1/'`
ffmpeg -i "$entry" -codec copy "${FILENAME}.mp4"
fi
done
chmod ug+x /usr/local/bin/MKVtoMP4