Існує маса ситуацій, коли використання 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
кожен файл. Це зайві накладні витрати).