Bagaimana saya bisa mengeluarkan ls daftar jalan satu per baris rekursif?
Sebagai contoh, saya hanya ingin daftar datar file dengan path lengkap mereka:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
hampir melakukan apa yang saya butuhkan, tetapi saya tidak ingin jalan fragmen, saya ingin jalur penuh.
bash
command-line
find
ls
dreftymac
sumber
sumber
Jawaban:
Jika Anda benar-benar ingin menggunakan
ls
, maka format outputnya menggunakan awk:sumber
awk
ungkapan di atas ?Gunakan temukan:
Jika Anda hanya menginginkan file (mengabaikan direktori, perangkat, dll):
sumber
ls
parameter seperti--sort=extension
"ditebus" oleh solusi ini?ls -ld $(find .)
jika Anda ingin mengurutkan output berdasarkan waktu modifikasi:
ls -ltd $(find .)
sumber
--sort=extension
parameterls
find . -name "*" -exec ls -ld '{}' \;
(yang bekerja berapa pun jumlah file), tetapi perintah Anda jauh lebih pendek untuk ditulis;)find . -ls
.Coba cara sederhana berikut ini:
sumber
find "`pwd`"
jika path berisi spasi atau beberapa karakter khusus lainnya.find .
? -.-pwd
memulai, itu akan mencetak jalur absolut. Ngomong-ngomong, "Apa bedanya denganfind
" ;-)Perintah terbaik adalah:
tree -fi
Untuk menggunakan file tetapi bukan tautannya, Anda harus menghapus
>
dari output Anda:Jika Anda ingin mengetahui sifat dari setiap file, (untuk membaca hanya file ASCII misalnya) dengan dua
while
s:sumber
tree
!brew install tree
, mengingat Anda menggunakan homebrewOh, benar-benar daftar jawaban yang panjang. Ini sangat membantu dan akhirnya, saya membuat sendiri yang saya cari:
Untuk Mendaftar Semua File dalam direktori dan sub-direktori:
Untuk Mendaftar Semua Direktori di direktori dan sub-direktori:
Untuk Mendaftar Semua Direktori dan File dalam direktori dan sub-direktori:
sumber
find "$PWD" -type f | grep '\.json$'
Saya tidak tahu tentang path lengkap, tetapi Anda dapat menggunakan
-R
untuk rekursi. Atau, jika Anda tidak membungkukls
, Anda bisa melakukannyafind *
.sumber
Tidak menggunakan perintah eksternal selain ls:
sumber
Berguna untuk beberapa cangkang alat terbatas di mana menemukan / menemukan tidak tersedia.
sumber
awk
?temukan / akan lakukan triknya
sumber
Jangan membuatnya rumit. Saya hanya menggunakan ini dan mendapat hasil yang bagus:
sumber
ls -lR
tidak akan memenuhi tujuan itu.Cara termudah untuk semua orang di masa depan adalah:
Namun, ini juga menunjukkan ukuran whats yang terkandung dalam setiap folder. Anda dapat menggunakan awk untuk hanya menampilkan nama folder:
Sunting- Maaf maaf, salah saya. Saya pikir hanya folder yang diperlukan. Aku akan meninggalkan ini di sini kalau-kalau ada orang di masa depan yang membutuhkannya ...
sumber
Dengan memiliki kebebasan menggunakan semua opsi ls yang memungkinkan:
find -type f | xargs ls -1
sumber
Saya pikir untuk daftar datar, cara terbaik adalah:
(atau untuk menyimpannya dalam file txt)
sumber
find: illegal option -- D
Jalankan perintah bash dengan format berikut:
sumber
Berikut adalah sebagian jawaban yang menunjukkan nama direktori.
Penjelasan:
ls -mR *
daftar nama direktori lengkap yang diakhiri dengan ':', lalu daftarkan file dalam direktori tersebut secara terpisahsed -n 's/://p'
menemukan garis yang berakhir pada titik dua, melepaskan tanda titik dua dan mencetak garisDengan mengulangi daftar direktori, kita harus dapat menemukan direktori juga. Masih mengerjakannya. Merupakan tantangan untuk mendapatkan wildcard melalui xargs.
sumber
Menambahkan wildcard ke akhir direktori ls memaksa path penuh. Sekarang Anda memiliki ini:
Anda bisa melakukan ini sebagai gantinya:
Sayangnya ini tidak mencetak path lengkap untuk direktori yang diulang, jadi ini mungkin bukan solusi lengkap yang Anda cari.
sumber
Banyak jawaban yang saya lihat. Ini milik saya, dan saya pikir cukup berguna jika Anda bekerja di Mac.
Saya yakin Anda tahu ada beberapa "bundel" file ( App , .rtfd , .workflow , dan sebagainya). Dan melihat jendela Finder mereka tampak file tunggal. Tetapi mereka tidak. Dan
$ ls
atau$ find
melihatnya sebagai direktori ... Jadi, kecuali Anda perlu membuat daftar isinya juga, ini berfungsi untuk saya:Tentu saja ini untuk dir yang berfungsi, dan Anda bisa menambahkan ekstensi bundel lain (tetapi selalu dengan
/
setelahnya). Atau ekstensi lain jika bukan bundel tanpa ekstensi/
.Agak menarik "
.lpdf/
" (pdf multibahasa). Ini memiliki.pdf
ekstensi " " normal (!!) atau tidak ada di Finder. Dengan cara ini Anda mendapatkan (atau hanya menghitung 1 file) untuk inipdf
dan bukan banyak hal ...sumber
ls -lR
adalah apa yang Anda cari, atau setidaknya saya. Bersulangsumber
ls -lR
tidak akan memenuhi tujuan itu.Jika direktori dilewatkan sebagai jalur relatif dan Anda harus mengubahnya menjadi jalur absolut sebelum memanggil find. Dalam contoh berikut, direktori dilewatkan sebagai parameter pertama ke skrip:
sumber
readlink
Anda memiliki yang dapat Anda lakukandirectory=$(readlink -e $1)
readlink
pada OS X 10.5.8 tidak mendukung opsi -e.Ini lambat tetapi bekerja secara rekursif dan mencetak direktori dan file. Anda dapat mem-pipe-nya dengan awk / grep jika Anda hanya ingin nama file tanpa semua info / direktori lain:
sumber
@ ghostdog74: Tweak kecil dengan solusi Anda.
Kode berikut dapat digunakan untuk mencari file dengan path absolut penuhnya.
sumber
Saya tahu nama file tetapi menginginkan direktori juga.
cari $ PWD | nama file fgrep
bekerja dengan baik di Mac OS 10.12.1
sumber