Se você estiver em um ambiente semelhante ao Linux, poderá usar o utilitário basename
:
basename $(<your_file)
Eu tenho um arquivo de texto com a seguinte linha:
/u/tux/abc/spool/frtbla_mcdetc_0000149099_20101126135009990_1.tif
Eu quero extrair frtbla_mcdetc_0000149099_20101126135009990_1.tif
;
a palavra depois da última barra ( /
).
use este comando
cat text_file_name | cut -d '/' -f 6
Se você souber o formato exato da estrutura de diretório e ela não for alterada, você poderá usar cut
:
$ cut -f6 -d '/' file.txt
Aqui, use cut para tratar os separadores de diretório como um delimitador e extrair o 6º.
Se em vez disso tudo o que você sabe é que é a última parte de uma linha, mas não conhece a estrutura de diretórios , você também pode usar rev
:
$ rev file.txt | cut -f1 -d '/' | rev
Aqui, o arquivo é invertido e o campo primeiro é extraído, antes de ser revertido novamente.
O seguinte se aplica a todas strings em um shell, não apenas a nomes de arquivos, e é muito mais fácil do que recortar porque você não precisa saber quantos campos existem antes do que você deseja:
$ foo=/path/to/file/split/by/slashes.txt
$ echo ${foo##*/}
slashes.txt
Isso usa o "ajuste guloso", isto é, apara tudo até o último '/' como descrito aqui:
${foo <-- from variable foo
## <-- greedy front trim
* <-- matches anything
/ <-- until the last '/'
}
Eu não sei qual é o shell padrão no Aix, mas bash
está disponível e suporta expansão editada de variáveis.
Se o seu nome completo estiver na variável FileName
, então ${FileName##*/}
exibirá o nome com todos os caracteres principais excluídos até o último /
; por contraste ${FileName#*/}
exclui até o primeiro /
, enquanto ${FileName%/*}
exclui caracteres finais do último /
(ou seja, o caminho do diretório).
Se você gerar o nome do arquivo por um comando find
, precisará de um comando como:
find ... | while read FileName; do echo ${FileName##*/}; done
Se estiver em um arquivo de texto:
while read FileName; do echo ${FileName##*/}; done < FileList.txt
Substitua o comando echo
pelo processamento que você precisa fazer com o nome.
Tags shell aix shell-script