Temukan dan hapus semua file tanpa ekstensi dengan folder dan subfoldernya

16

Saya memiliki folder tanpa sekitar 500 subdirektori. Ada banyak sampah yang dapat ditemukan di dalamnya dan saya ingin membersihkannya.

Saya telah menghapus tipe file tertentu yang tidak saya inginkan, seperti gambar, dengan perintah ini:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Namun, sekarang saya ingin menghapus semua file ekstensi-kurang. File seperti "Daftar belanja" sebelum "Belanja daftar.txt"

Saya sudah mencoba perintah berikut tetapi tidak berhasil:

find . -mindepth 1 ! -iname "*.*" -type f -delete
etsnyman
sumber

Jawaban:

20

Coba ini:

find . -type f  ! -name "*.*"  -delete

Namun, perhatikan bahwa di atas tidak akan menghapus file yang namanya diakhiri dengan ., misalnya foo.. Untuk menghapusnya juga, gunakan ini sebagai gantinya:

find . -type f  ! -name "*.?*" -delete
terdon
sumber
Perintah kedua adalah pertanyaan saya berikutnya. Terima kasih banyak! Saya juga bisa mengetik find . -type f ! -name "*?.*" -deleteuntuk menghapus file seperti ".trash" atau apa pun yang saya tidak butuhkan. Jangan khawatir - itu bukan direktori Beranda saya, jadi saya tidak kehilangan file konfigurasi.
etsnyman
5
@etsnyman Lebih baik untuk menguji dulu perintah tanpa -deleteopsi!
Radu Rădeanu
@etsnyman tidak cukup, untuk menghapus file yang dimulai dengan titik, gunakan find . -type f -name ".*" -deleteyang ada di komentar terakhir Anda juga akan menghapus file tanpa ekstensi. Dan apa yang dikatakan Radu! Tes dulu!
terdon
@ RaduRădeanu Saya benar-benar mengujinya terlebih dahulu pada direktori dummy dengan file kosong ...
etsnyman
@terdon Apa arti tanda tanya dalam perintah kedua Anda?
Avinash Raj
2

Anda bisa menggunakan:

find . -type f ! -name "*.*" -delete
Radu Rădeanu
sumber