1

когда я набираю ls, я не хочу видеть .o файлы, потому что каждый раз, когда я ls, он видит X.cpp Xh Xo, как мне не перечислить .o файлы?

2 ответа2

2

BSD ls OS X не поддерживает аргумент -I присутствующий в GNU ls, для фильтрации типов файлов.

Вы можете запустить следующее выражение, которое возвращает все файлы в текущем каталоге, которые не имеют расширения .o , и в противном случае печатает тот же формат, что и ls -l:

find * -maxdepth 0 ! -name '*.o' -print0 | xargs -0 ls -dl

Вы можете создать для этого функцию в вашем ~/.zprofile чтобы запустить ее, набрав lso <extension>:

function lso {
    find * -maxdepth 0 ! -name "*.$1" -print0 | xargs -0 ls -dl
}

Он не подходит в качестве полной замены ls , так как не поддерживает аргументы.

Образец вывода:

$ ls -l
total 8
-rw-r--r--  1 danielbeck  staff    0  2 Sep 12:52 pi.c
-rw-r--r--  1 danielbeck  staff    0  2 Sep 12:52 pi.o
-rw-r--r--  1 danielbeck  staff  278 31 Aug 06:52 pi.py
-rw-r--r--  1 danielbeck  staff    0  2 Sep 12:52 pi.pyc

$ lso
-rw-r--r--  1 danielbeck  staff    0  2 Sep 12:52 pi.c
-rw-r--r--  1 danielbeck  staff  278 31 Aug 06:52 pi.py
-rw-r--r--  1 danielbeck  staff    0  2 Sep 12:52 pi.pyc
0

Если вы setopt extended_glob , вы можете сделать что-то вроде ls -ld ^*.o и, возможно, назначить это псевдониму по вашему выбору.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .