Как ограничить вывод ls только отображением имени файла, даты и размера?

25

Как я могу использовать lsв Linux, чтобы получить список имен файлов только по дате и размеру? Мне не нужно видеть другую информацию, такую ​​как владелец, разрешение.

пинка
источник
о каком линуксе мы говорим?
Толиций
сервер apache ..

Ответы:

26

ls -l | awk '{print $5, $6, $7, $9}'

Это напечатает размер файла в байтах, месяце, дате и имени файла.

jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 bar
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 baz
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 quux

jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
Jin
источник
@Sosukudo Да, я тоже не уверен. Но люди, похоже, согласны с тем, что можно принизить плохие вопросы, но не ответы, если они полезны. meta.stackexchange.com/questions/98197/...
Джин
@Sosukodo: не стесняйтесь upvote сейчас :)
sehe
6
нет поддержки имен файлов с несколькими пробелами
meso_2600
12

Технически это невозможно с помощью ls, но findможно выполнить ту же работу с помощью -printfпереключателя:

find -maxdepth 1 -printf '%t %s %p\n'
thiton
источник
1
Ваше предложение - мой победитель, и я бы порекомендовал, если люди интересуются дополнительными полями для печати RTFM. Например, покажите мне разрешения для всех файлов, которые не являются каталогом: find usr/lib/ -not -type d -printf '%M %p\n output: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Научите человека ловить рыбу и все такое ...
Крейг,
Вопрос касается linux, поэтому не безрассудный ответ, но для записи это требует GNU find.
Дэн Притц
5

Вы всегда можете сделать:

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file1
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file2
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file3
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file4
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file5
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file6
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file7

cut это к:

$ ls -l | cut -f 8-13 -d ' '

0 Oct  6 23:29 file1
0 Oct  6 23:29 file2
0 Oct  6 23:30 file3
0 Oct  6 23:30 file4
0 Oct  6 23:30 file5
0 Oct  6 23:30 file6
0 Oct  6 23:30 file7

$ 
tolitius
источник
4
не работает с: владельцами переменных, группами, размерами файлов
meso_2600
Cut не разрушает последовательные разделители, где также ls -lиспользуются пробелы. Если ваши столбцы имеют неодинаковую длину (в каком столбце 5 размер файла часто не будет), обрезка не будет правильно выбирать столбцы. Поможет сворачивание последовательных пробелов (следите за пробелами в именах файлов). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Дейв
4

Еще один не lsспособ:

> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200         10485760    tmp.1           |
2017-06-15 10:41:25.659570000 +0200              666    tmp.TKPzm3BfRw  |

Объяснение: %y= удобочитаемая дата модификации; %s= размер в байтах ( %12sвыровненный по правому краю, длина 12); %n= имя файла ( %-16nвыровнено по левому краю, длина 16); \t= табуляция, \n= перевод строки. |= буквенная труба char, просто чтобы показать конец имени файла.

Нравится ls, statне имеет опций для выбора файлов для показа. (Это может быть сделано с помощью оболочки, как показано выше или некоторые find ... -print0 | xargs -r0 stat ..., например.)

EndlosSchleife
источник
Вопрос был о linux, так что ваш ответ в порядке, но для всех, кто заботится, вот эквивалент для статистики FreeBSD. stat -f '%N %Sm %z' filename
Дэн Притц
2

Незначительные изменения в толеции

ls -lh | cut -f 6- -d ' '
zzapper
источник
1
Хотите объяснить, что добавляет этот вариант?
Иво Флипс
Просто отпадает необходимость указывать номер конечного поля с помощью 6-вместо вместо 6-x
zzapper