Saya ingin menghapus file apa pun yang terlihat wordpress-891.sql
dari direktori saat ini (bukan di dalam sub-direktori).
Akan rm wordpress-*.sql
melakukan trik atau akankah ini juga menghapus kecocokan dari sub-direktori?
command-line
bash
HorusCoding
sumber
sumber
rm
tidak melakukan ekspansi nama file ...rm "foo*"
akan mencoba menghapus file dengan tanda bintang literal dalam namanya.Jawaban:
Tidak. Globing normal
*
tidak rekursif dan tidak jugarm
.Jika nama direktori cocok, itu tidak akan dihapus - Anda perlu
-r
bendera untuk menghapus direktori.Jadi aman untuk melakukannya jika Anda yakin ingin menghapus file-file itu.
Anda juga dapat membuat
rm
interaktifmaka akan meminta konfirmasi sebelum menghapus setiap file
sumber
Ya itu berhasil untuk Anda dan menghapus semua file dengan skema itu di direktori saat ini. Dan TIDAK, itu tidak menghapus file dalam sub-direktori.
Kapanpun Anda tidak yakin apa yang terjadi ketika Anda menjalankan perintah seperti:
maka jalankan saja menggunakan
ls
:file yang Anda lihat di output adalah yang akan dihapus.
Ketika Anda mencoba untuk mendapatkan daftar seperti
foo*
:, lebih baik menggunakan-d
sakelarls
untuk mencegah daftar berkas dengan direktori bernamafoobar/
dll.Trik ini berfungsi untuk perintah yang tidak digunakan untuk melakukan pekerjaan secara rekursif.
Hal lain yang dapat Anda lakukan adalah mengetikkan input yang Anda inginkan, misalnya:
wordpress-*
lalu tekan Ctrl+ Alt+ *, dan sekarang semua kecocokan diketik secara otomatis di depan perintah Anda.sumber
printf "%s\n" wordpress-*.sql
echo rm file*
. Terutama mencari nama file yang bermusuhan seperti-rf
rm ./*
ataurm -- *
.xargs -0
@DavidFoersterls foo*
dan Anda memiliki direktori yang dipanggilfoobar
, Anda juga mendapatkan daftar isi direktori itu, jadi polosls
bukan cara terbaik untuk apa yangrm
akan terjadiTidak,
rm
tidak berulang melalui subdirektori.Lihat Menghapus file yang cocok di semua subdirektori - SuperUser untuk metode menghapus file dalam subdirektori.
Jika Anda pernah khawatir tentang menghapus sesuatu yang penting secara tidak sengaja, gunakan
gvfs-trash
(yang mengirim file ke tempat sampah) alih-alihrm
(yang secara permanen menghapus file).sumber
gvfs-trash
menyebutkan belajar sesuatu hari ini hampir tidak menggunakannya ...Jika Anda ingin menemukan dan menghapus semua file yang cocok seperti
wordpress-*.sql
, Anda dapat menggunakanfind
perintah. :)Misalnya, Anda ingin menghapus semua file yang cocok dengan di
wordpress-*.sql
bawahtest_dir
, lakukan seperti berikut ini.Setiap kali
find
program benar-benar menemukan file yang cocok, ia mencoba untuk menjalankan perintah berikut-exec
opsi setelah Dalam hal inirm -f {}
akan dieksekusi dan{}
akan diubah ke nama file yang cocok. MisalnyaAnda juga dapat mengatur kedalaman sub-direktori dengan
-maxdepth
opsi.Harap dicatat bahwa Anda harus menentukan
-maxdepth
opsi sebelum opsi lain. Kalau tidak, Anda dapat memenuhi hasil yang sebenarnya tidak ingin Anda lihat.sumber
-maxdepth
. Gunakan-exec rm -f {} +
daripada-exec \;
, atau lebih baik lagi, hanya-delete