Istnieje wiele sytuacji, w których użycie a *
jest praktycznie nieuniknione - np. rm -rf *
W folderze zawierającym tysiące podfolderów i plików.
Ale co, jeśli chcesz wykluczyć tylko jeden lub dwa pliki lub foldery z rm
polecenia? Przeszukiwałem swoją stronę i znalazłem tylko dość skomplikowane rozwiązania, jak find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;
podano tutaj .
Czy można to zrobić w łatwiejszy sposób - bez tego objazdu find
? Np. rm -rf --exclude='one' --exclude='two' --exclude='three' *
Jak w rsync czy po prostu rm -rf -e 'one','two','three' *
?
Może nawet ogóle możliwość wyłączenia rzeczy z *
(tak jak inne polecenia cp
, mv
... nie trzeba zaimplementować własną rękę)? Coś w *{'one','two','three'}
tym stylu?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three
, ale wolałbym rozwiązanie dające możliwość wyraźnego wykluczenia czegoś z *
. Z pewnością będą sytuacje, w których przenoszenie lub kopiowanie plików do innego miejsca docelowego nie będzie możliwe.
find
z tej--delete
opcji (nie trzeba wykonywaćrm
dla każdego pliku. To niepotrzebny narzut).