/ / Precisa de comando para imprimir o nome do arquivo, mas não os caminhos de diretórios precedentes [closed] - bash, directory

Precisa de comando para imprimir o nome do arquivo, mas não os caminhos de diretórios precedentes [closed] - bash, directory

Atualmente imprime /dir1/dir2/dir3/filename

Eu só quero imprimir apenas o filename "sem" os caminhos do diretório.

Alguma sugestão?

Respostas:

1 para resposta № 1

A questão é extremamente vaga, mas supondo que você tenha um comando Bash como

echo "$path"

você pode imprimir apenas o nome do arquivo com

echo "${path##*/}"

echo pode fazer coisas inesperadas quando usado com strings variáveis, então uma alternativa melhor é

printf "%sn" "${path##*/}"

0 para resposta № 2

Eu realmente não entendo o que você está tentando fazer, mas

ls /path/to/files > /path/to/output

Digamos que você tenha 3 arquivos de texto individuais no diretório, o acima irá combinar todos os 3 arquivos de cada nome de arquivo em uma linha sem o caminho real.

espero que ajude

Alternativa de bash

for file in /path/to/files/*.txt; do
echo ${file##*/} >> /path/to/output/filename.txt
done

0 para resposta № 3

usar nome de base para isso assim:

shortpath=$(pwd)
basename "$shortpath"

0 para a resposta № 4

Eu consegui fazer isso usando o awk

| awk "{(n = split ($ 18, a," / ")); imprima $ 6, $ 10, $ 8, um [n]," n "}"> /sometextfile.txt

"n" foi porque eu precisava de uma linha em branco entre os resultados.