Sintaks ls untuk menunjukkan nama file dan direktori

-1

Saya ingin menggunakan ls perintah sehingga hasilnya terlihat seperti ini:

folder1/file1.doc
folder1/file2.doc
folder1/file44.doc
folder3/file1.doc
folder66/file4.doc
folder999/file.doc

Dengan kata lain saya ingin menampilkan nama direktori serta nama file untuk setiap baris.

cd myfolder
ls * > output.txt

Saya pikir saya perlu menambahkan beberapa perintah ke ls baris di atas.

Apakah ini mungkin dilakukan dengan menggunakan ls?

user3278770
sumber

Jawaban:

0

Ini jauh lebih mudah digunakan find:

find folder* -type f > output.txt

Wildcard akan diperluas ke semua nama folder dan secara rekursif akan mendaftarkan file dengan path mereka diawali oleh nama folder.

slhck
sumber
0

Seperti yang dibahas baru-baru ini di Dapatkan semua jalur file dari titik tertentu ... (pada AU), Anda dapat melakukan ini sebagai berikut:

shopt -s globstar
ls -d1 **

Perhatikan bahwa ls pilihan huruf kecil D dan nomor satu. Catat itu ls tidak benar-benar melakukan apa pun di sini kecuali mendaftar argumennya; Anda mungkin juga berkata

printf "%s\n" **

Ini tidak terbatas pada sejumlah level tertentu.

Jika Anda ingin memasukkan nama yang dimulai dengan titik ( . ), Anda juga harus shopt -s dotglob.

G-Man
sumber
0

Jika Anda hanya memiliki satu level (yaitu, semua subdirektori Anda saat ini tidak memiliki subdirektori di dalamnya), maka

ls -1 */*

harus melakukan apa yang Anda inginkan. Perhatikan bahwa opsinya adalah nomor satu, bukan huruf ell.

Jika Anda memiliki subdirektori tetapi Anda tidak perlu daftar file subdirektori tersebut, maka

ls -1d */*

harus melakukan apa yang Anda inginkan. Sekali lagi, opsinya adalah one dee, bukan ell dee.

Jika tata letak file Anda terlalu kompleks, maka Anda akan memerlukan find pernyataan seperti

find . -print | sed s:./::
hymie
sumber
1
Tapi itu tidak akan mencantumkan file satu per baris. Itu akan menjadi nama folder, dan kemudian daftar file.
slhck
Tentu saja saya mencobanya. Saya tidak mengatakan sesuatu tidak berfungsi tanpa 100% yakin ... Perintah pertama mencantumkan banyak file per baris pada BSD. Di GNU / Linux Bash itu memformat cantuman untuk lebih mudah dibaca - juga bukan satu file per baris .. Dan juga tidak dengan ls -1.
slhck
Saya minta maaf kepada Anda. Tiga mesin berbeda menanggapi perintah dengan tiga cara berbeda. Saya sekarang menyadari bahwa mesin pertama bekerja "dengan benar" karena salah satu nama file begitu panjang, memaksa satu kolom. Saya telah memperbarui jawaban saya untuk menggunakan bendera -1 (satu) yang akan memaksa satu file-per-baris.
hymie