Existem muitas situações em que o uso de a *é praticamente inevitável - por exemplo, rm -rf *em uma pasta que contém milhares de subpastas e arquivos.
Mas e se você quiser excluir apenas um ou dois arquivos ou pastas do rmcomando? Pesquisei no Google e só encontrei soluções bastante complicadas, como find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;as mencionadas aqui .
Existe a possibilidade de fazer isso de uma maneira mais fácil - sem esse desvio find? Por exemplo, rm -rf --exclude='one' --exclude='two' --exclude='three' *como no rsync ou apenas rm -rf -e 'one','two','three' *?
Talvez até mesmo uma possibilidade geral de excluir coisas de *(para que outros comandos como cp, mv... não tem que implementar a sua própria)? Algo mais *{'one','two','three'}ou menos?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three, mas eu preferiria uma solução que desse a possibilidade de excluir explicitamente algo de *. Certamente haverá situações em que mover ou copiar os arquivos para outro destino não será uma opção.
findcom a--deleteopção (não é necessário executarrmpara cada arquivo. Isso é desnecessário).