Olası Çoğaltma:
Bazıları hariç bir dizindeki tüm dosyalar nasıl silinir?
Unix'teki bir (veya bazı) dosyalar hariç tümü nasıl silinir?
Gibi bir şey
rm -rf -ignore myfile.txt *
Olası Çoğaltma:
Bazıları hariç bir dizindeki tüm dosyalar nasıl silinir?
Unix'teki bir (veya bazı) dosyalar hariç tümü nasıl silinir?
Gibi bir şey
rm -rf -ignore myfile.txt *
Yanıtlar:
ls * | grep -v dont_delete_this_file | xargs rm -rf
Misal :
mkdir test && cd test
touch test1
touch test2
touch test3
touch test4
touch test5
'Test2' dışındaki tüm dosyaları kaldırmak için:
ls * | grep -v test2 | xargs rm -rf
Sonra 'ls' çıktı:
test2
DÜZENLE:
Yorum için teşekkürler. Dizinde boşluk bulunan bazı dosyalar varsa:
mkdir test && cd test
touch "test 1"
touch "test 2"
touch "test 3"
touch "test 4"
touch "test 5"
Şunu kullanabilirsiniz (bash ile):
rm !("test 1"|"test 4")
'ls' çıkışı:
test 1
test 4
ls -1 | grep -v do_not_delete | xargs -I files rm "files"
Bu sayfa kabuğa bağlı olarak çeşitli seçenekler sunar: http://www.unix.com/unix-dummies-questions-answers/51400-how-remove-all-except-one-file.html
Özyinelemeli bir özyineleme rm
için özyinelemeyi find
saklamak istediğiniz dosya (lar) ile yapmanız ve hariç tutmanız gerekir (veya grep
bu sizi boşluk sorununa sokabilir). Bir kabuk glob için, modern kabuklar dosyaları hariç tutmak için kullanılabilecek glob desenlerine sahiptir; bu, kullanılabilir olduğunda kabuk düzeyi glob özyinelemesiyle birleştirilebilir (örneğin zsh
, rm **/*~foo/bar
bunun büyük dizin ağaçları için bağımsız değişken uzunluk sınırlarına girebileceğini unutmayın).