Pertanyaan Bagaimana cara menghapus semua file dari direktori?


Yang paling dekat saya dapatkan adalah

# rm /path/to/directory/*.*

tetapi itu tidak berfungsi untuk file yang tidak memiliki ekstensi ...


205
2017-09-06 07:58


asal




Jawaban:


Linux tidak menggunakan ekstensi. Terserah kepada pembuat file untuk memutuskan apakah dia ingin nama untuk memiliki ekstensi. Linux melihat pada byte ke-1 untuk mencari tahu jenis file apa yang sedang ditangani.

Untuk menghapus semuanya dalam penggunaan direktori:

rm /path/to/directory/*

Anda dapat menggunakan -r pilihan, misalnya:

rm -r /path/to/directory/* 

untuk juga menghapus sub direktori (bersama dengan semua konten mereka) di dalam direktori tempat Anda menghapus konten. Kalau tidak, itu akan menunjukkan kesalahan memberitahu Anda itu tidak menghapus direktori.


235
2017-09-06 08:06



Jika Anda juga ingin menghapus file yang tersembunyi, jalankan shopt -s dotglob sebelum berlari rm (...) - danjjl
Artinya all files ;) *.* berarti semua file yang mengandung . suatu tempat di nama - Rinzwind
@Rinzwind, lebih tepat, tanda bintang berarti "nol atau lebih dari karakter apa pun". Begitu *a* berarti nol atau lebih banyak karakter, diikuti oleh a diikuti dengan nol atau lebih banyak karakter. Itu akan cocok dengan nama file happy, apple, a atau la. - DisgruntledGoat
@ user784637 Anda terlalu mudah terkesan - barlop
Inilah perintah yang Anda inginkan: rm - * - anon58192932


  • Untuk menghapus folder itu dengan semua isinya (termasuk semua folder interior):

    rm -rf /path/to/directory
    
  • Untuk menghapus semua isi folder(termasuk semua folder interior) tetapi bukan folder itu sendiri:

    rm -rf /path/to/directory/*
    

    atau

    rm -rf /path/to/directory/{*,.*}
    

    jika Anda ingin memastikan bahwa file / direktori tersembunyi juga dihapus.

  • Untuk menghapus semua "file" dari dalam folder (tidak menghapus folder interior):

    rm -f /path/to/directory/{*,.*}
    

Dimana:

  • rm - berdiri untuk "menghapus"
  • -f - berdiri untuk "memaksa"yang berguna ketika Anda tidak ingin diminta / diminta jika Anda ingin menghapus arsip, misalnya.
  • -r - berdiri untuk "rekursif"Yang berarti bahwa Anda ingin pergi secara rekursif ke setiap folder dan menghapus semuanya.

126
2017-09-07 17:26



Saya menemukan ini sebagai jawaban yang lebih komprehensif dan membantu, melebihi dan melampaui jawaban yang ditandai sebagai Diterima. - inspirednz
rm -rf /path/to/directory/* tidak menghapus file tersembunyi di folder mis. .htaccess. Mungkin rm -rf /path/to/directory/.? Belum mencobanya. - Mark Berry
@MarkBerry rm -rf /path/to/directory/.* - Lilian A. Moraru
@ LilianA.Moraru, saya melakukan beberapa pengujian hari ini. rm -rf /path/to/directory/.* hanya menghapus file yang tersembunyi di direktori yang ditentukan. Melihat komentar @ danjjl tentang jawaban @ Rinzwind, untuk juga menghapus file yang tersembunyi, jalankan shopt -s dotglob sebelum berlari rm -rf /path/to/directory/*. - Mark Berry
PERINGATAN: rm -rf /path/to/directory/.* pada sistem saya menyebabkan penghapusan item di /path/to. Untungnya, saya baru saja mencadangkan seluruh data saya ke disk yang terpisah. Tak perlu dikatakan, JANGAN mengeluarkan perintah rm -rf /path/to/directory/.* kecuali Anda telah mencadangkan seluruh komputer Anda ke lokasi yang terpisah / aman! - lawlist


Untuk menghapus semua file dalam direktori (termasuk file dan subdirektori tersembunyi) jalankan:

rm -rf /path/to/directory/{*,.*}

30
2017-11-23 09:38



Ini harus menjadi jawaban yang diterima indah. Terima kasih! - Nam G VU
Bukankah pertandingan glob ini "." dan juga? - hertzsprung
@hertzsprung - itu, dan itu akan memberi Anda peringatan yang tidak dapat dihapus ./ dan ../, tetapi masih akan menghapus file yang tersembunyi. - Ryan Wheale
Ini tidak berfungsi di konsol Mac, file yang tersembunyi masih ada dengan baris perintah itu. - agapitocandemor


Jika Anda ingin menghapus hanya file di / path / ke / direktori yang dapat Anda lakukan

find /path/to/directory -type f -print0| xargs -0 rm 

atau

find /path/to/directory -type f -exec rm '{}' \;

Anda dapat melakukan banyak hal dengan findKeuntungannya adalah Anda dapat mencantumkan apa yang ditemukan tanpa pemipaan rm sehingga Anda dapat melihat apa yang akan dihapus sebelum memulai.


8
2017-09-06 12:13



GNU find sebagai -delete predikat. Jika Anda masih ingin menggunakannya -exec, mengganti \; dengan + akan berkumpul rm panggilan bersama, meningkatkan efisiensi. - enzotib
sejumlah besar file dengan '+' akan menyebabkan masalah, karena daftar akan terlalu besar, sama dengan rm -f *. dan ketika menghapus sejumlah besar file dari folder yang sama (berbicara dalam millons) keduanya tidak baik :) Pada akhirnya C ++ datang dan menghapus file dalam urutan inode di dir-tree. - Osis
Anda benar-benar harus menambahkan - setelah rm. Tanpa itu jika Anda memiliki nama file -rf atau sejenisnya akan ditafsirkan sebagai argumen ke rm. misalnya xargs -0 rm - atau -exec rm - {} \; - Richm
Anda juga dapat memberikan argumen -n ke xargs. Itu akan menyebabkannya membagi perintah rm untuk memiliki jumlah argumen maksimum yaitu 'xargs -n 100 -0 rm -' akan menghapus file dalam pecahan 100. - Richm
Anda juga dapat menambahkan -maxdepth 1 untuk memastikan bahwa find tidak mengembalikan file dari subdirektori apa pun. yaitu menemukan / path / ke / direktori -maxdepth 1 -type f - Richm


Jika Anda juga ingin menghapus semua subdirektori dan direktori itu sendiri, Anda dapat menggunakan rm -rf /path/to/directory. Tetapi selalu periksa kembali baris Anda sebelum menekan kembali, rm -rf dapat menyebabkan banyak havock juga, mis. jika Anda secara tidak sengaja memasukkan spasi setelah garis miring pertama saat memiliki izin pengguna super ...


6
2017-09-07 08:51





Untuk menghapus semua file dan direktori (termasuk file tersembunyi satu) di direktori, Anda dapat mencoba yang berikut:

  • hapus folder, lalu buat ulang

    rm -rf dir_name && mkdir dir_name
    
  • menggunakan find

    find dir_name -mindepth 1 -delete  
    

Di sini kami tentukan -mindepth 1 untuk mengecualikan dir_name direktori itu sendiri.
Lihatlah tautan berikut:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory


5
2017-11-27 16:05



Terima kasih atas saran Anda dan saya telah menambahkan lebih banyak penjelasan untuk tautan. - zeekvfu
Hati-hati, karena menghapus dan membuat ulang folder mungkin menghasilkan izin yang berbeda / salah untuk folder ini! - einjohn


Kamu bisa cd ke dalam direktori dan kemudian jalankan perintah rm *.* sama seperti di DOS jika Anda ingat.


1
2018-05-01 00:59



DOS DEL untuk file dan RMDIR untuk direktori kosong- dan file tersembunyi dan sistem harus memiliki atribut ATTRIB yang dihapus terlebih dahulu. Tidak sesederhana;) - Eric