Jest wszystkim, co nie jest dowiązaniem symbolicznym


12

Czy lsistnieje sposób na pokazanie zanegowanych warunków, takich jak „wszystkie pliki, które nie są dowiązaniem symbolicznym”? Często używam tego ostatniego w katalogu projektu, ale przydatne byłyby również inne negacje.

Na razie moje badania doprowadziły tylko do utworzenia aliasu do czegoś „jak”:

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

ale oczywiście w ten sposób nie otrzymuję kolorów ls, formatowania kolumn itp.

Czasami używam Bash v3 na OS X 10.8.2 i Bash v4 na Pangolin.

Odpowiedzi:


14

Zamiast przesyłać do niego sort, użyj ls.

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

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

Jeśli użyłeś powłoki zsh, możesz użyć ich nieprzenośnych rozszerzeń glob:

ls -d *(^@)

Dzięki 4 odpowiedź! Dlaczego uciekasz? Wygląda na to, że działa nawet bez… Co ryzykuję, nie uciekając? Ciekawe, jak korzystasz z finału, +a nie \;, proszę wyjaśnij?
Robottinosino,

2
@Robottinosino +sprawia, że ​​wysyła wszystko do pojedynczego lspolecenia zamiast uruchamiać go osobno dla każdego pliku (w ten sposób ls może wykonywać kolumny i sortować). Uciekłem! ponieważ jest specjalną postacią dla niektórych pocisków, chociaż twoja wydaje się w porządku.
Random832

Gotcha Świetna sprawa! Czy zgadzasz się, że jest to trochę pracochłonne, po prostu negowanie predykatu w prosty sposób ls? Czy może być lepszy sposób?
Robottinosino,

1
@Robottinosino Edytowane za pomocą czegoś, co Zsh może zrobić. Nie sądzę, że bash może to zrobić.
Random832
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.