Saya perlu menemukan semua file dimulai dengan nama NAMEdi pohon direktori dan menghapus semua file ini menggunakan satu perintah shell.
Saya perlu menemukan semua file dimulai dengan nama NAMEdi pohon direktori dan menghapus semua file ini menggunakan satu perintah shell.
Jawaban:
untuk menghapus semua file yang namanya memiliki nama --- Anda dapat menggunakan
find -name . 'name*' -exec rm {} \;
grepmemiliki -execsaklar?
Hapus semua file dalam direktori saat ini dan sub-direktori di mana nama file dimulai dengan "foo":
$ find . -type f -name foo\* -exec rm {} \;
NB: gunakan dengan hati-hati - back up dulu - juga melakukan dry run dulu, mis
$ find . -type f -name foo\*
hanya akan memberi tahu Anda nama file yang akan dihapus.
find . -type f -name foo\* -deletelakukan triknya
Saya telah mencoba cara ini berfungsi untuk saya coba perintah di bawah ini.
rm -rf Example*
di sini "Contoh" adalah teks yang umum untuk semua file.
Anda bisa menggunakan find:
find . -name "name*" -exec rm {} \;
Dengan globstaropsi (aktifkan dengan shopt -s globstar):
rm -f **/NAME*
**/mengembang untuk ./, */, */*/, */*/*/dll Jika Anda memiliki direktori nama dimulai dengan NAME, perintah akan mengeluh bahwa rmtidak 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 rmmungkin, tetapi tidak tunduk pada batasan panjang baris perintah:
find . -type f -name 'NAME*' -exec rm -f {} +
(Perhatikan + bukan \;untuk menutup -execpernyataan.)
find . -name 'foo'* -type f -delete sepertinya jawaban paling sederhana.
Anda dapat menjalankan ini tanpa -deletetanda sebelumnya untuk melihat file mana yang akan dihapus.
Cari "Inode" nomor file / folder dan kemudian hapus menggunakan nomor inode. Di bawah ini adalah contohnya:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;