В момента той отпечатва /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" беше, защото имах нужда от празна линия между резултатите.