Saya ingin menghapus setiap file, tetapi menjaga struktur folder. Apakah ada cara?
CATATAN: (Saya menggunakan GNU bash 4.1.5).
Saya ingin menghapus setiap file, tetapi menjaga struktur folder. Apakah ada cara?
CATATAN: (Saya menggunakan GNU bash 4.1.5).
Jawaban:
Coba ini:
find . ! -type d -exec rm '{}' \;
Ini akan menghapus setiap file, tidak termasuk direktori, di bawah direktori kerja saat ini. Berhati-hatilah dengan perintah ini.
Jika versi find
pada mesin Anda mendukungnya, Anda juga dapat menggunakannya
find . ! -type d -delete
find
perintah tidak pernah melihat tanda kutip. Itu hanya melihat {}
penanda sebagai argumen.
-exec command {} +
" & ini " -exec command ;
". Saya telah menggunakan \;
di masa lalu tidak pernah '{}'.
Anda dapat menggunakan perintah find
untuk menemukan setiap file tetapi mempertahankan struktur direktori:
$ find /some/dir -type f -exec rm {} +
Per T&J Unix & Linux ini berjudul: gnu temukan dan sembunyikan {} untuk beberapa shell - yang mana? , melarikan diri {}
dengan kutu tunggal ( '
) tampaknya tidak diperlukan lagi dengan cangkang modern seperti Bash.
Cara mudah untuk menghapus setiap file biasa di direktori dan subdirektori saat ini secara rekursif:
zsh -c 'rm **/*(.)'
Hanya zsh yang memiliki globbing kualifikasi untuk mencocokkan file berdasarkan jenis. Namun, rm
perintah tersebut tidak berfungsi pada direktori, jadi dalam bash, Anda dapat menggunakannya
shopt -s globstar
rm **/*
Ini tidak bekerja untuk perintah selain rm
. Secara umum, Anda dapat menggunakan find
:
find . -type f -delete
atau jika Anda find
tidak mendukung -delete
:
find . -type f -exec rm {} +
Saya memiliki persyaratan yang sama untuk menghapus file dari path dan sub direktori (memfilter berdasarkan waktu) tanpa menghapus struktur direktori.
Dan saya telah menggunakan format di bawah ini yang berfungsi untuk saya.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex: find (path file) -mtime (lebih dari atau kurang dari hari) -type f -exec rm {} \;
-type: Sebutkan jenis file "f" untuk direktori "d" -exec: jalankan perintah rm: hapus {}: output dari perintah find
Catatan: Lakukan tes sebelum menggunakannya. Silakan perbaiki atau perbarui jika saya melewatkan sesuatu.
find ... rm
struktur dasarnya telah dicakup, saya tidak yakin ini merupakan kontribusi yang berharga sebagai Jawaban baru untuk pertanyaan ini.