переместите все файлы, кроме файлов с расширением [duplicate]

Я переместил tar.bz2 из раздела "Загрузки" в / usr / src, куда мне нравится помещать все, что я устанавливаю в своей системе. Теперь я извлек файл и хочу переместить его содержимое в / usr / share / icons. Но я не хочу перемещать сам tar.bz2:

# ls -l | grep Comix
-rw-rw-r--  1 guarddog guarddog   2190951 May 26 11:03 ComixCursors-0.8.2.tar.bz2
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Black
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Blue
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Green
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Orange

В выходной команде я хочу переместить все, кроме tar.bz2, в терминал.

Я пробовал следующее, но, к сожалению, он также перемещает tar.bz2:

 mv Comix*[!tar.bz] /usr/local/share

Я ожидал, что оператор отрицания исключит файл, заканчивающийся tar.bz. Приведенное ниже решение - это то, что я искал, не хотел использовать find со сложными флагами.

1
задан 26 May 2015 в 19:49

3 ответа

Можно использовать GLOBIGNORE переменная bash:

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

Теперь выполненный:

mv ComixCursors* /usr/share/icons/

Также примечание, что, когда Вы сделаны с операцией, хорошо к unset переменная избежать нежелательных сценариев:

unset GLOBIGNORE

Или

GLOBIGNORE=
0
ответ дан 26 May 2015 в 19:49

Используйте старое доброе find:

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
0
ответ дан 26 May 2015 в 19:49

Существует также простая команда для использования, например, в Домашнем dir, у нас есть папка "Xtest", которая содержит test.tar.gz и test.txt, test2.txt и т.д. и пустая папка "Xtest2", где мы хотим переместить все файлы кроме .tar.gz тогда:

cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2

Все содержание кроме test.tar.gz будет перемещено в Xtest2 папка.

0
ответ дан 26 May 2015 в 19:49

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

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