Я переместил 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 со сложными флагами.
Можно использовать GLOBIGNORE
переменная bash
:
GLOBIGNORE=ComixCursors-0.8.2.tar.bz2
Теперь выполненный:
mv ComixCursors* /usr/share/icons/
Также примечание, что, когда Вы сделаны с операцией, хорошо к unset
переменная избежать нежелательных сценариев:
unset GLOBIGNORE
Или
GLOBIGNORE=
Используйте старое доброе find
:
find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
Существует также простая команда для использования, например, в Домашнем dir, у нас есть папка "Xtest", которая содержит test.tar.gz
и test.txt
, test2.txt
и т.д. и пустая папка "Xtest2", где мы хотим переместить все файлы кроме .tar.gz
тогда:
cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2
Все содержание кроме test.tar.gz
будет перемещено в Xtest2
папка.