Как выделить права доступа к файлу и имя файла из результатов ls -l?

Как выделить права доступа к файлу и имя файла из результатов ls -l?

Я хочу видеть только имя файла и соответствующее разрешение файла. Как это сделать?

ls -l дает

-rw-rw-r-- 1 jb jb    102 Apr 28 12:48  hello2.txt
-rw-rw-r-- 1 jb jb    102 Apr 28 12:53  hello.txt

Я хотел бы видеть, как показано ниже

-rw-rw-r-- 1  hello2.txt
-rw-rw-r-- 1  hello.txt

решение1

Команда statсоздана для этого примера:

stat -c '%A %n' *.txt

или

stat --printf '%A\t%n\n' *.txt

где спецификаторы формата имеют следующие значения

   %A     access rights in human readable form
   %n     file name

решение2

Большую часть пути можно выполнить, используя lsсаму функцию: ls -lGg --time-style=+она выведет только режимы доступа, количество ссылок, размер и имя.

Обработка lsвыходных данных сложна, поскольку имена файлов могут содержать практически все, что угодно, поэтому вы не можете ничего предположить о них при обработке. Лучше использовать findвместо этого, чтобы напечатать именно необходимую информацию, используя-printf:

find . -printf '%M %p\n'

(С такими опциями, -maxdepthкак использование по мере необходимости для ограничения листинга.)

решение3

Вы можете передать его по конвейеру gawkи вывести нужные вам поля, что-то вроде этого или похожего:

ls -l | gawk '{print $1 " " $2 " " $9}'

Связанный контент