Bagaimana cara mendaftarkan semua file dan direktori tersembunyi secara rekursif?

13

Saya ingin mendaftar semua file dan direktori tersembunyi dan kemudian menyimpan hasilnya ke file.

Apakah ada perintah untuk ini?

lukasz
sumber

Jawaban:

13

Jika menggunakan GNU find, Anda bisa melakukannya

find /path -path '*/.*' -ls | tee output-file

Edit

Untuk menghindari menampilkan item yang tidak tersembunyi yang terkandung dalam direktori tersembunyi

find /path -name '.*' >output-file

(seperti yang disebutkan, teedapat dihindari jika Anda tidak perlu melihat output, dan -lsopsi harus digunakan hanya jika diperlukan).

enzotib
sumber
2
Atau dengan >alih - alih | tee, jika seseorang tidak ingin melihat seluruh output pada terminal.
rozcietrzewiacz
Anda juga tidak perlu -lsmelakukan ini, itu mungkin informasi tambahan yang berantakan untuk dipikirkan.
Caleb
Ini juga mencantumkan isi direktori tersembunyi, yang bukan pertanyaannya (mungkin - ini agak ambigu).
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles: memang ambigu. Diedit jawabannya
enzotib
Perhatikan bahwa yang pertama tidak spesifik untuk GNU. -pathPOSIX sejak 2008. -lstidak standar tetapi cukup umum.
Stéphane Chazelas
10

Untuk membuat daftar file dan direktori tersembunyi di direktori saat ini, termasuk .dan ..:

echo .*

Untuk membuat daftar file dan direktori tersembunyi di direktori saat ini dan subdirektori secara rekursif:

find . -name '.*'

Jika Anda ingin menyimpan hasil ke file, gunakan pengalihan:

find . -name '.*' >output-file.txt
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Dengan zsh(menggunakan kualifikasi glob D ):

print -rl ./**/.*(D)

Untuk memasukkan file yang tidak disembunyikan dalam direktori tersembunyi:

setopt extendedglob
print -rl ./**/*~^*/.*(D)
don_crissti
sumber
0

Anda benar-benar dapat menempatkan argumen yang sama beberapa kali di baris perintah yang sama:

find /storage/????-????/ -iname '.*' -iname "*" | tee -a file-list-micSD-20190801163729.fli

The tee -aPerintah mampu menampilkan perintah keluaran (atau stdout ) secara bersamaan whie menulis ke file. The -aPilihan mencegah clobbering dan tidak menambahkan informasi ke file target output sebagai gantinya.

/storage/????-????/adalah contoh jalur. Ini adalah jalur ke kartu MicroSD dari ponsel Android yang lebih baru (ada juga aplikasi terminal untuk Android, dengan perintah lebih sedikit tetapi masih banyak dan meningkat secara signifikan sejak Android 6.0). Kartu MicroSD sebelumnya /storage/extSdCard. Sekarang, ini adalah nomor seri volume.

neverMind9
sumber