Saya perlu menemukan semua file dimulai dengan nama NAME
di pohon direktori dan menghapus semua file ini menggunakan satu perintah shell.
36
untuk menghapus semua file yang namanya memiliki nama --- Anda dapat menggunakan
find -name . 'name*' -exec rm {} \;
grep
memiliki-exec
saklar?Hapus semua file dalam direktori saat ini dan sub-direktori di mana nama file dimulai dengan "foo":
NB: gunakan dengan hati-hati - back up dulu - juga melakukan dry run dulu, mis
hanya akan memberi tahu Anda nama file yang akan dihapus.
sumber
find . -type f -name foo\* -delete
lakukan triknyaSaya telah mencoba cara ini berfungsi untuk saya coba perintah di bawah ini.
di sini "Contoh" adalah teks yang umum untuk semua file.
sumber
Anda bisa menggunakan
find
:sumber
Dengan
globstar
opsi (aktifkan denganshopt -s globstar
):**/
mengembang untuk./
,*/
,*/*/
,*/*/*/
dll Jika Anda memiliki direktori nama dimulai denganNAME
, perintah akan mengeluh bahwarm
tidak dapat menghapus direktori, tapi itu semua.Perhatikan bahwa ini mungkin mengalami batasan panjang baris perintah jika glob cocok dengan banyak file.
Atau, dengan pemanggilan sesedikit
rm
mungkin, tetapi tidak tunduk pada batasan panjang baris perintah:(Perhatikan
+
bukan\;
untuk menutup-exec
pernyataan.)sumber
find . -name 'foo'* -type f -delete
sepertinya jawaban paling sederhana.Anda dapat menjalankan ini tanpa
-delete
tanda sebelumnya untuk melihat file mana yang akan dihapus.sumber
Cari "Inode" nomor file / folder dan kemudian hapus menggunakan nomor inode. Di bawah ini adalah contohnya:
sumber