Как исключить папку при использовании команды mv

Я сделал следующую пару команд на Ubuntu 16.04.02, чтобы избавиться от Skype 4.3:

sudo apt-get --purge remove skype
sudo apt-get autoremove

Первый сам по себе оставил полностью функциональную установку Skype.

Изменить: ответы с использованием skypeforlinux для более новых версий Skype (например, Skype 5.3).

0
задан 15 December 2017 в 23:03

6 ответов

Это не имеет ничего общего с mv, но является функцией bash, ссылаясь на man bash:

Если опция оболочки extglob включена с использованием встроенного магазина, несколько расширенных распознаются операторы сопоставления шаблонов. В следующем описании список шаблонов представляет собой список из одного или нескольких шаблонов, разделенных символом |. Композитные шаблоны могут быть сформированы с использованием одного или нескольких следующих подматриц:! (Список шаблонов) Соответствует любому примеру, кроме одного из заданных шаблонов

!(f1), в вашем примере соответствует f2 f3, поэтому эффективно вы делаете:

mv -t f3/ f2 f3 f2

Чтобы достичь своей цели, вы должны сделать следующее:

mv -t f3/ !(f[13]) # or !(f1|f3)

Это выражение соответствует всем, кроме f1 и f3. [!d10 ]

Это также работает с *, ? и […]:

$ ls
e1  e2  e3  f1  f2  f3
$ ls !(e*|?[12])
f3
5
ответ дан 22 May 2018 в 16:58

Это не имеет ничего общего с mv, но является функцией bash, ссылаясь на man bash:

Если опция оболочки extglob включена с использованием встроенного магазина, несколько расширенных распознаются операторы сопоставления шаблонов. В следующем описании список шаблонов представляет собой список из одного или нескольких шаблонов, разделенных символом |. Композитные шаблоны могут быть сформированы с использованием одного или нескольких следующих подматриц:! (Список шаблонов) Соответствует любому примеру, кроме одного из заданных шаблонов

!(f1), в вашем примере соответствует f2 f3, поэтому эффективно вы делаете:

mv -t f3/ f2 f3 f2

Чтобы достичь своей цели, вы должны сделать следующее:

mv -t f3/ !(f[13]) # or !(f1|f3)

Это выражение соответствует всем, кроме f1 и f3.

Это также работает с *, ? и […]:

$ ls e1 e2 e3 f1 f2 f3 $ ls !(e*|?[12]) f3
5
ответ дан 18 July 2018 в 01:07

Это не имеет ничего общего с mv, но является функцией bash, ссылаясь на man bash:

Если опция оболочки extglob включена с использованием встроенного магазина, несколько расширенных распознаются операторы сопоставления шаблонов. В следующем описании список шаблонов представляет собой список из одного или нескольких шаблонов, разделенных символом |. Композитные шаблоны могут быть сформированы с использованием одного или нескольких следующих подматриц:! (Список шаблонов) Соответствует любому примеру, кроме одного из заданных шаблонов

!(f1), в вашем примере соответствует f2 f3, поэтому эффективно вы делаете:

mv -t f3/ f2 f3 f2

Чтобы достичь своей цели, вы должны сделать следующее:

mv -t f3/ !(f[13]) # or !(f1|f3)

Это выражение соответствует всем, кроме f1 и f3.

Это также работает с *, ? и […]:

$ ls e1 e2 e3 f1 f2 f3 $ ls !(e*|?[12]) f3
5
ответ дан 24 July 2018 в 17:20

!(f1) - расширенное выражение glob, поэтому (при условии установки опции оболочки extglob) он расширяется до списка файлов (не). Другими словами, если ваш каталог изначально содержал f1, f2, f3, то

mv -t f3/ !(f1) f2

расширяется как

mv -t f3/ f2 f3 f2

Первая ошибка должна быть очевидной; второй - потому, что он пытается дважды переместить f2 - и не работает второй раз.

4
ответ дан 22 May 2018 в 16:58

!(f1) - расширенное выражение glob, поэтому (при условии установки опции оболочки extglob) он расширяется до списка файлов (не). Другими словами, если ваш каталог изначально содержал f1, f2, f3, то

mv -t f3/ !(f1) f2

расширяется как

mv -t f3/ f2 f3 f2

Первая ошибка должна быть очевидной; второй - потому, что он пытается дважды переместить f2 - и не работает второй раз.

4
ответ дан 18 July 2018 в 01:07

!(f1) - расширенное выражение glob, поэтому (при условии установки опции оболочки extglob) он расширяется до списка файлов (не). Другими словами, если ваш каталог изначально содержал f1, f2, f3, то

mv -t f3/ !(f1) f2

расширяется как

mv -t f3/ f2 f3 f2

Первая ошибка должна быть очевидной; второй - потому, что он пытается дважды переместить f2 - и не работает второй раз.

4
ответ дан 24 July 2018 в 17:20

Другие вопросы по тегам:

Похожие вопросы: