Apakah mungkin untuk membuat daftar nama file yang dimulai dengan X atau mengandung X?

2

Seperti judulnya bertanya, apakah mungkin untuk membuat daftar file yang dimulai dengan X atau berisi X?

lsdigunakan untuk membuat daftar file. Apakah ada opsi yang bisa saya gunakan sehingga saya bisa membuat daftar file yang dimulai dengan atau mengandung huruf tertentu?

irl_irl
sumber

Jawaban:

3

"Memulai dengan" hanyalah spesialisasi "mengandung", jadi Anda dapat menggunakan yang sama untuk keduanya.

ls *X*
Ignacio Vazquez-Abrams
sumber
1
Ini memiliki tanda centang, tetapi saya pikir itu tidak menjawab pertanyaan. Ini menunjukkan isi dari setiap subdirektori dari folder saat ini yang namanya mengandung X. Ini TIDAK menunjukkan daftar semua isi folder saat ini yang mengandung X.
Trombone ke
1
@ 75thTrombone Tidak yakin saya mengerti apa yang Anda katakan. Wildcard cocok dengan nama file dengan X di mana saja di dalamnya; daftar isi subdirektori yang cocok adalah fitur (salah -?) dari ls, yang dapat dinonaktifkan dengan -dopsi.
tripleee
Untuk membuat ini aman dan berfungsi dalam semua kasus yang dimaksudkan, seseorang harus membentuk kebiasaan menggunakan ls -- *X*.
Moreaki
6

Untuk melakukan bagian "mengandung X", Anda harus:

ls | grep "X"

ls - Daftar semua file di direktori saat ini

| - Pipa, mengirim semua output dari perintah sebelum sebagai input ke perintah sesudahnya.

grep "X" - Mencari teks dalam input yang diberikan (di sini, melalui pipa).

ls -1 | grep "^X"

ls- Daftar file dalam direktori saat ini, satu di setiap baris, penting untuk ekspresi reguler yang akan kita gunakan grep.

| - Pipa

grep "^X" - Ini pada dasarnya diterjemahkan menjadi: "Awal baris, dan kemudian X" sehingga akan menampilkan file yang dimulai dengan "X".

Semoga ini membantu!

Wuffers
sumber
2
mywiki.wooledge.org/ParsingLs
Ignacio Vazquez-Abrams
Dan Anda tidak perlu melewatkan -1opsi saat mem-pipkan lsoutput, itu hanya menampilkan listing ringkas ke ttys.
whitequark
tidak hanya ini jauh lebih lambat, itu juga ide yang buruk. lihat Mengapa tidak menguraikan ls(dan apa yang harus dilakukan)?
phuclv
0

Mengapa menggunakan ls *X*? Saat Anda mengetik perintah ini, bashsudah menginterpretasikan bintang-bintang dan memperluasnya, sehingga echo *X*akan melakukan hal yang persis sama.

Tapi itu tidak akan mencantumkan file yang namanya dimulai dengan titik. Jika Anda benar-benar menginginkan file, saran terbaik saya adalah:

find .  -maxdepth 0 -type f -iname '*X*'

( -maxdepth 0mencegah subdirektori pemindaian).

Benoit
sumber
-maxdepth 0bisa dilakukan dengan ls -d. Dan file dot dapat diperluas denganshopt -s dotglob
phuclv
0

Menggunakan karakter wildcard:

ls *X*

Akan mencantumkan semua file yang berisi "X"

ls X*

Akan mencantumkan semua file dimulai dengan "X"

ls *X

Akan mencantumkan semua file yang diakhiri dengan "X"

Theo
sumber
Meskipun kontribusi Anda sangat dihargai, sayangnya hanya sebagian yang benar. Coba ini: touch -- '-X' && ls *X. Di bawah MacOS, Anda akan mendapatkan kesalahan dan di bawah sebagian besar distribusi Linux Anda akan mendapatkan subset dari daftar sebenarnya semua file. Solusi yang lebih lengkap akan digunakan ls -- *X.
Moreaki
-4

Itu adalah saran bagus - JIKA ANDA MENGGUNAKAN LINUX! Menggunakan perintah "ls" hampir sama dengan perintah DIR MS-DOS. Namun, perintah ls hanya hidup di interpreter baris perintah tertentu seperti C-shell dan NOT di MS-DOS dan tentu saja TIDAK MS-Windows.

Jadi jika Anda bertanya tentang solusi Windows, saya mungkin berasumsi bahwa Anda belum sepenuhnya menjelajahi Windows explorer (JANGAN bingung dengan "Internet Explorer"). Misalnya, untuk melihat file secara alfabetis di Windows Explorer cukup buka saja (klik My Computer, misalnya), pastikan Anda dapat melihat dengan detail, navigasikan ke folder yang ingin Anda urutkan dan kemudian klik pada kolom yang disebut 'Nama' untuk melihat semua file yang dimulai dengan A diikuti oleh file yang dimulai dengan B dan seterusnya. Klik lagi dan Anda dapat melihat semua file tercantum dalam urutan terbalik di mana Anda pertama kali melihat semua file dimulai dengan Z - klik untuk yang ketiga kalinya dan kembali ke daftar yang pertama. Tapi itu tidak berhenti di situ. Anda kemudian dapat mengklik kolom tanggal (dengan asumsi Anda tidak t batalkan pilihan dari pengaturan menu default dan sembunyikan atau sesuatu) untuk menampilkan daftar alfabet dengan file-file terbaru yang terdaftar lebih dulu. Anda bahkan dapat menambahkan lebih banyak kolom (melalui klik kanan) di mana Anda dapat menambah atau menghapus opsi tampilan di mana Anda bahkan dapat menentukan tajuk yang dapat menampilkan file sesuai dengan rumus pencarian atau bahkan dengan kotak centang - dan itu hanya untuk memulai!

Kemudian lagi, jika Anda jadul, Anda bisa menggunakan baris perintah DOS di kotak DOS. Misalnya, buka kotak DOS (jalankan "cmd.exe"), buka direktori / folder Anda dan ketik "dir [star] x [bintang]" (tanpa tanda kutip) untuk menampilkan semua file dengan x pada nama . Tentu saja Anda juga dapat mengarahkan output ke file lain juga. Contohnya akan ada 'dir [star] x [star]> filename.txt' yang akan membuat file teks yang disebut 'filename.txt' dan berisi daftar semua file dengan x pada namanya. Tentu saja, mengetikkan "dir x [bintang]" hanya akan menampilkan file yang dimulai dengan huruf x. (Perhatikan perbedaan halus di mana x ditempatkan pada perintah dan simbol wildcard asterisk [bintang]?). Dan jika Anda benar-benar ingin menjadi gila, Anda bahkan bisa menulis file batch! Hanya tidak t lupa garis jeda atau redirect output karena itu akan menjadi agak sia-sia sebaliknya. (Adakah yang ingat batch DOS "pemrograman"?

Semoga ini bisa membantu.

PS Saya harus mengganti karakter asterisk menggunakan [bintang] karena blog ini tidak akan mencetaknya - maaf.

PSS saya tahu. Aku tahu! Saya mungkin dapat menambahkan karakter asterisk [bintang] tetapi saya sudah memposting. Jadi tolong jangan menutup telepon. Saya akan mencoba mengingat (bagaimana saya memposting) waktu berikutnya.

Anonim, tanpa nama
sumber
2
"ls" lebih dari mungkin tersedia jika bash sudah ada. "ls" tidak ada hubungannya dengan C-shell. "bash" sama sekali tidak terbatas pada Linux. Saya menjalankan keduanya pada banyak rasa Unix, Windows dan beberapa OS yang lebih eksotis.
jlliagre
Ini bukan "blog". Anda mendapatkan tanda bintang secara harfiah dengan menghindarinya dengan garis miring terbalik. Lihat bantuan pemformatan yang ditampilkan di bilah sisi saat Anda mengedit.
tripleee