/ / Serve il comando per stampare il nome del file ma non i precedenti percorsi di directory [chiuso] - bash, directory

Serve il comando per stampare il nome del file ma non i precedenti percorsi di directory [chiuso] - bash, directory

Attualmente stampa /dir1/dir2/dir3/filename

Voglio solo che stampi solo il filename "senza" i percorsi di directory.

Eventuali suggerimenti?

risposte:

1 per risposta № 1

La domanda è estremamente vaga, ma partendo dal presupposto che tu abbia un comando di Bash come

echo "$path"

puoi stampare solo il nome del file con

echo "${path##*/}"

echo può fare cose inaspettate se usato con stringhe variabili, quindi è un'alternativa migliore

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

0 per risposta № 2

Non capisco davvero cosa stai cercando di fare ma

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

Supponiamo che tu abbia 3 singoli file di testo nella directory, il precedente combinerà tutti e 3 i file ogni nome di file su una riga senza il percorso effettivo.

spero che sia d'aiuto

Alternativa alternativa

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

0 per risposta № 3

uso basename per quello come questo:

shortpath=$(pwd)
basename "$shortpath"

0 per risposta № 4

Sono stato in grado di farlo usando awk

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

"n" era perché avevo bisogno di una linea vuota tra i risultati.