Tecnicamente, um arquivo tar
pode ser chamado de qualquer coisa . O nome de um arquivo não decide o formato ou o conteúdo do arquivo no Unix.
No entanto, se restringirmos a questão a determinar se um nome de arquivo na variável $filename
ether termina com a string .tar
ou contém a string .tar.
, ou não:
case $filename in
*.tar|*.tar.*) echo 'possibly a tar file' ;;
esac
O texto acima permite .tar
no final de um nome ou .tar
seguido de outra extensão.
Ou, em bash
(o acima funciona em qualquer sh
shell, incluindo bash
):
if [[ "$filename" =~ \.tar$ ]] ||
[[ "$filename" =~ \.tar\. ]]; then
echo 'possibly a tar file'
fi
ou
if [[ "$filename" = *.tar ]] ||
[[ "$filename" = *.tar.* ]]; then
echo 'possibly a tar file'
fi
Se você tiver um arquivo com uma longa lista de nomes de arquivos, o seguinte informará quais terminam com a string .tar
ou contém a string .tar.
:
grep -E '\.tar$|\.tar\.' file.list
O sinal -E
informa grep
para tratar o padrão fornecido como uma expressão regular estendida (para manipular |
).
Para listar as extensões final de cada arquivo em uma lista longa (armazenada em file.list
):
sed 's/.*\.//' file.list
A expressão sed
s/.*\.//
removerá tudo em cada linha até e incluindo o ponto final.