Ada banyak situasi di mana penggunaan a *
hampir tidak dapat dihindari - misalnya rm -rf *
dalam folder yang menampung ribuan subfolder dan file.
Tetapi bagaimana jika Anda ingin mengecualikan hanya satu atau dua file atau folder dari rm
perintah? Saya sudah menelusuri Google dan hanya menemukan solusi yang cukup rumit seperti yang find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;
dinyatakan di sini .
Apakah ada kemungkinan untuk melakukan ini dengan cara yang lebih mudah - tanpa jalan memutar ke sana find
? Misalnya rm -rf --exclude='one' --exclude='two' --exclude='three' *
suka di rsync atau hanya rm -rf -e 'one','two','three' *
?
Mungkin bahkan kemungkinan umum untuk mengecualikan hal-hal dari *
(perintah sehingga lainnya seperti cp
, mv
, ... tidak harus melaksanakan sendiri)? Sesuatu seperti *{'one','two','three'}
itu?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three
, tapi saya lebih suka solusi yang memberikan kemungkinan untuk secara eksplisit mengecualikan sesuatu dari *
. Pasti akan ada situasi di mana memindahkan atau menyalin file ke tujuan lain tidak akan menjadi pilihan.
find
dengan--delete
opsi (tidak perlu mengeksekusirm
untuk setiap file. Itu overhead yang tidak perlu).