Существует множество ситуаций, когда использование a *
практически неизбежно, например, rm -rf *
в папке, содержащей тысячи вложенных папок и файлов.
Но что, если вы хотите исключить из команды только один или два файла или папки rm
? Я гуглил свой путь и нашел только довольно сложные решения, find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;
как указано здесь .
Есть ли возможность сделать это проще - без этого обхода find
? Например, rm -rf --exclude='one' --exclude='two' --exclude='three' *
как в Rsync или просто rm -rf -e 'one','two','three' *
?
Может быть , даже вообще возможность исключить вещи из *
(так что другие команды типа cp
, mv
... не должны реализовывать свои собственные)? Что-то вроде *{'one','two','three'}
или так?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three
, но я бы предпочел решение, дающее возможность явно исключать что-либо из *
. Безусловно, будут ситуации, когда перемещение или копирование файлов в другое место назначения будет невозможным.
find
эту--delete
опцию (не нужно выполнятьrm
для каждого файла. Это ненужные накладные расходы).