/ / Необходима е команда за отпечатване на името на файла, но не и предишните пътеки на директорията [затворен] - баш, директория

Необходима е команда за отпечатване на името на файла, но не и предишните пътеки на директорията [затворен] - баш, директория

В момента той отпечатва /dir1/dir2/dir3/filename

Просто искам да отпечата само filename "без" пътищата на директорията.

Някакви предположения?

Отговори:

1 за отговор № 1

Въпросът е изключително неясен, но ако приемем, че имаш команда Баш като

echo "$path"

можете да отпечатате само името на файла с

echo "${path##*/}"

echo може да прави неочаквани неща, когато се използва с променливи струни, така че е по-добра алтернатива

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

0 за отговор № 2

Аз наистина не разбирам какво се опитвате да направите, освен

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

Кажете, че имате 3 отделни текстови файла в директорията, по-горе ще комбинирате всички 3 файла на всяко име на файл на един ред без действителния път.

Надявам се, че това помага

Баш алтернатива

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

0 за отговор № 3

употреба basename за това така:

shortpath=$(pwd)
basename "$shortpath"

0 за отговор № 4

Успях да постигна това чрез използване на awk

| awk "{(n = разделен ($ 18, a," / ")), отпечатване на $ 6, $ 10, $ 8, a [n]," n "}"> /sometextfile.txt

"n" беше, защото имах нужда от празна линия между резултатите.