Все, что не является символической ссылкой


12

Есть ли lsспособ показать отрицательные условия, такие как "все файлы, которые не являются символической ссылкой"? Я часто использую последнее в каталоге проекта, но другие отрицания также были бы полезны.

На данный момент мое исследование привело только к созданию псевдонима к чему-то «как»:

find . -maxdepth 1 ! -type l | sort # (...)

но, очевидно, таким образом я не получаю окраску ls, форматирование столбцов и т.д ...

Я иногда использую Bash v3 для OS X 10.8.2 и Bash v4 для Pangolin.

Ответы:


14

Вместо того, чтобы передать это sort, используйте ls.

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

Если вы используете оболочку zsh, вы можете использовать их непереносимые глобальные расширения:

ls -d *(^@)

Thx 4 ответ! Почему ты сбежал!? Кажется, что работает даже без .. Чем я рискую, не избежав этого? Интересно, как вы используете финал, +а не \;, пожалуйста, объясните?
Robottinosino

2
@Robottinosino Он +заставляет его отправлять все в одну lsкоманду вместо того, чтобы запускать ее отдельно для каждого файла (таким образом, ls может выполнять столбцы и сортировку). Я сбежал! потому что это особый характер для некоторых оболочек, хотя ваш, кажется, хорошо это воспринимает.
Random832

Попался. Отличный материал! Согласны ли вы с тем, что это немного трудоемко, просто отрицать предикат простым ls? Может ли быть лучший способ?
Роботтинозино

1
@Robottinosino Отредактировано с помощью Zsh. Я не думаю, что Bash может сделать это все же.
Random832
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.