ex regex para obter o nome do arquivo sem extensão com ()

0

Eu tenho uma string GameOfThronesS01E05.mkv . Eu quero GameOfThronesS01E05 usando sed com regex.

Eu tentei

echo GameOfThronesS01E05.mkv | sed 's/\(.+\)\.mkv$//'

e não funcionou

    
por neckTwi 10.02.2017 / 18:13

3 respostas

1

Se você estiver usando um sistema que tenha utilitários GNU, você sempre pode usar basename para remover a extensão:

$ basename -s ".mkv" GameOfThronesS01E05.mkv                                                          
GameOfThronesS01E05

Caso contrário, o python é sempre uma boa escolha também:

$ python -c 'import sys;print sys.argv[1][:-4]' GameOfThronesS01E05.mkv                               
GameOfThronesS01E05
    
por 10.02.2017 / 18:48
0

Esta é uma solução mais simples:

echo GameOfThronesS01E05.mkv | sed -n 's/.mkv//p'
    
por 10.02.2017 / 18:26
0

Obrigado @don_crissti. aqui está o meu conversor MKV para MP4

$vi /usr/local/bin/MKVtoMP4
for entry in *
do
        if [[ $entry =~ .+\.mkv$ ]]; then
                FILENAME='echo $entry | sed -E 's/(.+)\.mkv$//''
                ffmpeg -i "$entry" -codec copy "${FILENAME}.mp4"
        fi
done
chmod ug+x /usr/local/bin/MKVtoMP4
    
por 10.02.2017 / 18:53