Se o seu arquivo for salvo como $FILENAME
, todos darão o 4º diretório. Nestes exemplos, estou configurando manualmente
FILENAME="/media/data/temp1/Joe Jackson - The Ultimate Collection/CD2/Jumpin' Jive Live - Joe Jackson.mp3"
-
Use o shell:
$ dir=${FILENAME#*/*/*/*/}; echo ${dir//\/*} Joe Jackson - The Ultimate Collection
Aqui, primeiro removo as primeiras quatro barras, deixando o quarto diretório e o nome do arquivo e, em seguida, removendo o nome do arquivo.
-
Shell e
basename
:$ dir=${FILENAME#*/*/*/*/}; basename "$dir" Jumpin' Jive Live - Joe Jackson.mp3
A mesma ideia acima, apenas usando
basename
para a etapa final. -
Analise com Perl:
$ echo "$ FILENAME" | perl -pe 's # (. ? /) {4} (. ?) /.*#$ 2 #' Joe Jackson - The Ultimate Collection
A expressão regular corresponde a 4 repetições de 0 ou mais caracteres seguidos por uma barra, depois tudo para a próxima barra e depois para todo o resto. Os parênteses permitem que você capture um padrão correspondente, então estamos substituindo tudo pelo segundo padrão criado, o nome do diretório.
Como alternativa, você pode dividir a linha em um array em slases e imprimir o 5º campo (5 porque o primeiro está vazio devido ao
/
no início da variável):$ echo "$FILENAME" | perl -F"/" -lane 'print $F[4]' Joe Jackson - The Ultimate Collection
-
Analise com
awk
:$ echo "$FILENAME" | awk -F"/" '{print $5}' Joe Jackson - The Ultimate Collection
Mesma ideia, mas em
awk
.