ls semuanya yang _not_ sebuah symlink


12

Apakah lsada cara untuk menunjukkan kondisi yang dinegasikan seperti "semua file yang bukan symlink"? Saya banyak menggunakan yang terakhir dalam direktori proyek tetapi negasi lain akan berguna juga.

Untuk saat ini, penelitian saya hanya menghasilkan pembuatan alias untuk sesuatu "seperti":

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

tapi jelas dengan cara ini saya tidak mendapatkan pewarnaan ls, format kolom, dll ...

Saya kadang menggunakan Bash v3 di OS X 10.8.2 dan Bash v4 di Pangolin.

Jawaban:


14

Alih-alih mengirimkannya sort, gunakan ls.

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

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

Jika Anda menggunakan shell zsh, Anda dapat menggunakan ekstensi glob non-portabel:

ls -d *(^@)

Thx 4 jawabannya! Mengapa kamu melarikan diri !? Tampaknya bisa berfungsi bahkan tanpa .. Apa yang saya risikokan dengan tidak melarikan diri? Menarik bagaimana Anda menggunakan final +dan tidak \;, tolong jelaskan?
Robottinosino

2
@Robottinosino The +membuatnya mengirim semua ke satu lsperintah alih-alih menjalankannya secara terpisah untuk setiap file (dengan cara ini ls dapat melakukan kolom dan menyortir). Saya lolos! karena itu adalah karakter khusus untuk beberapa kerang meskipun milikmu tampaknya menerimanya dengan baik.
Random832

Kena kau. Barang bagus! Apakah Anda setuju bahwa itu agak melelahkan, hanya untuk meniadakan predikat secara sederhana ls? Mungkinkah ada cara yang lebih baik?
Robottinosino

1
@Robottinosino Diedit dengan sesuatu yang dapat dilakukan zsh. Saya tidak berpikir bash bisa melakukannya.
Random832
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.