我已将 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
您可以使用GLOBIGNORE
以下变量bash
:
GLOBIGNORE=ComixCursors-0.8.2.tar.bz2
现在运行:
mv ComixCursors* /usr/share/icons/
还要注意,当你完成操作后,最好对unset
变量进行处理,以避免不必要的情况:
unset GLOBIGNORE
或者
GLOBIGNORE=
答案2
使用旧的好方法find
:
find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/
答案3
还有一个简单的命令可供使用,例如在您的主目录中,我们有一个文件夹“Xtest”,其中包含test.tar.gz
和等test.txt
,test2.txt
以及一个空文件夹“Xtest2”,我们想将除.tar.gz
以下之外的所有文件移动到其中:
cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2
除 之外的所有内容test.tar.gz
都将被移动到Xtest2
文件夹。