Як обмежити вихід ls лише на ім'я файлу, дату та розмір?


25

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


про який Linux ми говоримо?
толітіус

апаш-сер ..

Відповіді:


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

@Sosukudo Так, я теж не впевнений. Але, здається, люди згодні з тим, що це нормально, щоб не допустити поганих питань, але не відповіді, якщо вони корисні. meta.stackexchange.com/questions/98197/…
Цзінь

@Sosukodo: не соромтесь звернути заявку зараз :)
1111

6
немає підтримки
файлових

12

З технічної точки зору це неможливо ls, але findможна виконати ту саму роботу зі своїм -printfперемикачем:

find -maxdepth 1 -printf '%t %s %p\n'

1
Ваша пропозиція - це мій переможець, і я рекомендую, якщо людей цікавить більше полів для printf вони 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... Навчіть людину ловити рибу та все це ...
Craig

Питання стосується linux, тому не необгрунтована відповідь, але для запису для цього потрібно знайти GNU.
Dan Pritts

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

$ 

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= рядковий канал. |= буквальна діаграма труби, просто щоб показати кінець імені файлу.

Мовляв ls, statне має жодних варіантів вибору файлів для показу. (Це можна зробити, використовуючи глобальну оболонку, як показано вище, або деякі find ... -print0 | xargs -r0 stat ..., наприклад.)


Питання стосувалося linux, тому ваша відповідь чудова, але для тих, хто хвилює, ось еквівалент для FreeBSD stat. stat -f '%N %Sm %z' filename
Dan Pritts

2

Незначна варіація на толітіусі

ls -lh | cut -f 6- -d ' '

1
Хочете пояснити, що додає варіант?
Іво Фліпс

Просто усуває необхідність вказувати номер кінцевого поля, використовуючи 6- замість 6-x
zzapper
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.