Я хочу присвоїти результат своєї ls -l
команди:
-rw-r--r-- 1 root root 1866 Feb 14 07:47 rahmu.file
-rw-r--r-- 1 rahmu user 95653 Feb 14 07:47 foo.file
-rw-r--r-- 1 rahmu user 1073822 Feb 14 21:01 bar.file
Я хочу запустити лише grep rahmu
у стовпці $ 3, тому результат моєї grep
команди повинен виглядати так:
-rw-r--r-- 1 rahmu user 95653 Feb 14 07:47 foo.file
-rw-r--r-- 1 rahmu user 1073822 Feb 14 21:01 bar.file
Який найпростіший спосіб це зробити? Відповідь має бути переносним у багатьох Юнісах, бажано зосередитись на Linux та Solaris.
NB: Я не шукаю способу знайти всі файли, що належать даному користувачеві. Цей приклад був поданий лише для того, щоб зробити моє запитання зрозумілішим.
--printf
варіант stat
може стати в нагоді в тих місцях, де ви могли б інакше розглянути питання про розбір ls
. Але зазвичай find
це те, що ви хочете (як згадував @Gilles).
ls
є властивим крихким (подумайте, що станеться, якщо ім'я користувача містить пробіли - і так, це відбувається на деяких платформах). Використовуйтеfind
замість цього.