Bash - dzielenie wyświetlania linijek

0

Siema, mam taki kod:

#!/bin/bash

for f in `ls`; do
  echo "File -> $f"
done

I wyjście to mniej wiecej coś takiego:

File -> plik1
File -> plik2
File -> plik3

A w kodzie jak dopisze do komendy ls parametr -l to dzieją się takie rzeczy: (najpierw kod)

#!/bin/bash

for f in `ls -l`; do
  echo "File -> $f"
done

To wyjście wygląda mniej więcej:

File -> -rw-r--r--
File -> 1
File -> monte
File -> grupa
File -> 708
File -> 2013-12-10
File -> 18:28
File -> display.txt
File -> -rw-r--r--
File -> 1
File -> monte
File -> grupa
File -> 0
File -> 2013-12-04
File -> 00:27
File -> error.txt

Mógłby mi ktoś powiedzieć dlaczego tak się dzieje i jak temu zaradzić?
Czemu nie wyświetla się wszystko w jednej linii? - tzn jedna linia dla każdego pliku.
Później z każdej linijki powiedzmy chcę wyciągnąć tylko nazwę pliku poleceniem cut -d" " itd. i nie da się, bo to dzielenie wszystko psuje..

Dzięki z góry za pomoc!

0

Nie działa, ponieważ "for" oddziela względem białych znaków. U mnie podzieliło nawet nazwę pliku tylko dlatego, że wewnątrz znajdowała się spacja. Co do naprawy, nie pomogę.

0

Spróbuj przypisać 'ls -l' do jakiejś zmiennej przed pętlą, a w pętli użyć zmiennej. Nie mogę teraz sprawdzić czy to działa, ale wydaje mi się, że kiedyś mi pomogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1