Bash - wyjście z find w jednej linii

0

Mam

zbior=$( find . -maxdepth 2 -type d)

for plik in $zbior
do
    ls $plik 
done

Uzyskuję niepoprawne wyniki ↓
ls: nie ma dostępu do './2013-06': Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do '(156)/04-11': Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do 'Szuchnik': Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do 'Priapella': Nie ma takiego pliku ani katalogu

zamiast ↓
./2013-06 (156)/04-11 Szuchnik Priapella

Modyfikowałem fint z print0, xargs -0, echo, na nic te modyfikacje. Gdzie jest komplikacja?

0

Sprobuj tak (u mnie działa):

find . -maxdepth 2 -type d -print0 | xargs -0 ls

Generalnie musisz mieć dobrze escapowanie zrobione (tak zeby działało poprawnie ze spacjami).

Edit: tu masz dobrą odpowiedź z pętlą for https://stackoverflow.com/a/9612560/1779504

0

@Thommen: A może wystarczy dodać cudzysłowy w jednym miejscu:
ls "$plik"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.