GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa menghapus semua file dari direktori ketika melaporkan daftar Argumen terlalu lama

Solusi 1:

find . -maxdepth 1 -type f -exec rm -f {} \;

itu hanya membutuhkan waktu terlalu lama (satu exec dari rm per file).

yang ini jauh lebih efisien:

find . -maxdepth 1 -type f -print0 | xargs -r0 rm -f

karena dibutuhkan sebanyak mungkin nama file sebagai argumen untuk rm, lalu jalankan rm dengan beban nama file berikutnya... mungkin saja rm hanya dipanggil 2 atau 3 kali.

Solusi 2:

Jika Anda tidak dapat menghapus direktori, Anda selalu dapat menggunakan find.

find . -maxdepth 1 -type f -exec rm -f {} \;

Itu akan menghapus semua file di direktori saat ini, dan hanya direktori saat ini (bukan subdirektori).

Solusi 3:

Kedua hal ini akan menyelesaikan masalah. Ada analisis kinerja masing-masing teknik di sini.

find . -name WHATEVER -exec rm -rf {} \;

atau

ls WHATEVER | xargs rm -rf

Masalahnya berasal dari bash memperluas "*" dengan setiap item dalam direktori. Kedua solusi ini bekerja melalui setiap file secara bergantian.

Solusi 4:

Saya dapat melakukan ini dengan mencadangkan satu level:

cd ..

Dan berjalan:

rm directory name -rf

Dan kemudian membuat ulang direktori.

Solusi 5:

Semua doa find ini sangat bagus tapi saya jarang ingat persis nomenklatur yang dibutuhkan saat saya sedang terburu-buru:sebagai gantinya saya menggunakan ls. Seperti yang disebutkan seseorang, ls . akan berhasil tetapi saya lebih suka ls -1 seperti pada:

ls -1 | xargs -n 100 rm -rf

Angka -n xxx cukup aman untuk dimainkan karena melebihi maksimum akan dikoreksi secara otomatis (jika size-max terlampaui; lihat -s ) atau jika args-max untuk suatu aplikasi terlampaui biasanya akan lebih baik jelas.

Perlu dicatat grep berguna untuk menyisipkan di tengah rantai ini ketika Anda hanya ingin menghapus subset file dalam direktori besar, dan karena alasan apa pun tidak ingin menggunakan find.

Jawaban ini menganggap Anda menggunakan utilitas inti Gnu untuk ls, xargs &dll.


Linux
  1. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

  2. Bagaimana Cara Menghapus Semua File Dengan Ekstensi Tertentu Di Folder Tertentu?

  3. Daftarkan semua file secara rekursif dalam direktori termasuk file dalam direktori symlink

  1. Bagaimana saya bisa mendaftar (ls) 5 file terakhir yang dimodifikasi dalam direktori?

  2. bash:/bin/tar:Daftar argumen terlalu panjang saat mengompresi banyak file dengan tar

  3. Bagaimana cara memindahkan semua file dari direktori saat ini ke direktori atas?

  1. Bagaimana saya bisa menemukan semua file yang di-hardlink pada sistem file?

  2. bagaimana saya bisa menghapus direktori kosong secara rekursif di direktori home saya?

  3. Bagaimana saya bisa secara rekursif menghapus semua file dan direktori kosong di Linux?