Bagaimana saya bisa membuat hanya menampilkan file?

24

Saya pikir harus ada cara untuk membuat ls hanya menampilkan non-direktori, tetapi halaman manual tidak membuatnya jelas

dianggap biasa
sumber
Tidak yakin tentang ls, tetapi Anda dapat dengan mudah melakukannya dengan fileperintah: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck
1
Cara lain adalah dengan memfilter keluaran lsmelalui grep, sesuatu seperti ls -1F /directory/containing/the/files | grep -vE /$. Tapi ketahuilah bahwa mem-parsing output ls bisa rumit .
Henning Kockerbeck

Jawaban:

37
ls -p | grep -v /

Menggunakan ls -pkirim lsuntuk menambahkan garis miring ke entri yang merupakan direktori, dan menggunakan grep -v /kirim grepuntuk mengembalikan garis yang tidak mengandung garis miring.

thomasrutter
sumber
Saya memeriksa yang ini karena ini adalah jawaban favorit saya (sementara saya melakukan upvote semuanya), tetapi sekarang mencoba menemukan cara untuk meletakkannya di kolom dan membalik urutan output ...
Thinkinbinary
"Anda dapat menggunakan 1 sakelar untuk daftar kolom tunggal" maaf, saya memang mencoba mencari tahu apa yang Anda maksud dengan itu, saya akan menghargai dan memberi contoh / penjelasan jika Anda mau, saya hanya tahu saklar apa yang berkaitan dengan pemrograman C
pikirinbiner
@ skdkks Anda tidak perlu 1sakelar saat memipakan output karena akan default ke satu kolom dalam situasi itu. Jika itu yang Anda maksud.
thomasrutter
@thinksinbinary tidak yakin bagaimana membuatnya multi-kolom tetapi Anda bisa mencari atau mengajukan pertanyaan Anda sendiri dan seseorang akan tahu.
thomasrutter
7

Anda dapat mencoba ini:

find . -maxdepth 1 -not -type d

Dan petakan ini ke alias khusus.

Tetapi jika Anda benar-benar ingin menggunakan lsperintah, di sini:

ls -p | egrep -v /$

theabhinavdas
sumber
6

Kalau tidak:

ls -lAh | grep -v '^d'

Metode ini tercantum dalam

  • -l Format daftar panjang
  • -A Menampilkan hampir semua (tampilkan file tersembunyi tetapi jangan tampilkan .dan ..)
  • -h Ukuran file yang dapat dibaca manusia

sambil grep

  • -v Jangan tampilkan catatan yang cocok
  • Regular expressionfilter ^d- Mereka mulai dengan huruf d (untuk direktori) yaitudrwxrwxr-x <some file details> <foldername>

Jika Anda tidak ingin mengetik setiap waktu, Anda dapat membuatnya menjadi alias untuk profil bash / shell Anda.

sdkks
sumber
2

Saya melihat dalam komentar (@thinksinbinary) Anda pada jawaban oleh @thomasrutter, bahwa Anda ingin dapat mencetaknya dalam urutan terbalik dan dalam kolom. Anda mungkin sudah menemukan atau pindah, tetapi ini dia:

ls -pr | grep -v / | column
  • -p menambahkan garis miring ('/') ke nama direktori
  • -r membalik urutan output
  • -v memungkinkan grep melakukan pencarian terbalik untuk mencetak semuanya kecuali direktori ( semua yang tidak memiliki tanda '/' yang -p diletakkan di sana )
  • " Kolom meletakkannya di kolom" - Kapten Obvious
Levi Uzodike
sumber
1
Saya pikir itu keren bahwa di forum ubuntu orang masih berkomentar dan membaca posting Anda setelah waktu yang lama. Saya sudah ingin kembali ke linux untuk belajar sistem perakitan dan operasi karena melakukannya pada windows jauh lebih sulit. Terima kasih!
Thinkinbinary
0
ls -F | grep -v /

Perintah di atas menampilkan file, Tapi itu termasuk symlink, pipa, dll. Jika Anda ingin menghilangkannya juga, Anda dapat menggunakan salah satu dari bendera yang disebutkan di bawah ini.

ls -Fmenambahkan simbol ke nama file. Simbol-simbol ini menunjukkan informasi yang berguna tentang file.

ls -F | grep -Ev '/|@|*|=|>|\|'

Perintah di atas hanya menampilkan file.

BarathVutukuri
sumber