移动除扩展名 [重复] 之外的所有文件

移动除扩展名 [重复] 之外的所有文件

我已将 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.txttest2.txt以及一个空文件夹“Xtest2”,我们想将除.tar.gz以下之外的所有文件移动到其中:

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

除 之外的所有内容test.tar.gz都将被移动到Xtest2文件夹。

相关内容