如何使用 mv 命令仅移动选定的文件?

Pra*_*raj 7 command-line mv

将除*.trg文件外的所有文件移动到目标目录的命令是什么?

尝试了下面的命令,但它不起作用:

mv !(*.trg) tgtdir
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 12

您有一个扩展的 glob 模式,!(*.trg),它只有在extglob启用 shell 选项时才有效。

如输出shopt extglob所示:

extglob off
Run Code Online (Sandbox Code Playgroud)

您没有启用该选项。

所以你需要extglob通过以下方式启用:

shopt -s extglob
Run Code Online (Sandbox Code Playgroud)

那么你的命令应该可以工作。

此外,您的命令可以通过以下方式变得更紧凑:

mv -t tgtdir !(*.trg|tgtdir)
Run Code Online (Sandbox Code Playgroud)


tec*_*raf 5

使用find了否定-name的说法:

find . ! -name '*.trg' ! -name . -maxdepth 1 -exec mv {} <tgtdir> \;
Run Code Online (Sandbox Code Playgroud)

! -name .排除当前目录并-maxdepth 1确保只有当前目录中的文件和目录会出现在搜索结果中。

就像 plain 一样mv,根据您tgtdir所在的位置,您可能也需要排除它。