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

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

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

尝试了以下命令,但是没有作用:

mv !(*.trg) tgtdir

答案1

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

正如输出shopt extglob所示:

extglob off

您没有启用该选项。

因此您需要extglob通过以下方式启用:

shopt -s extglob

那么你的命令就应该可以起作用了。

此外,可以通过以下方式使你的命令更加紧凑:

mv -t tgtdir !(*.trg|tgtdir)

答案2

find与否定参数一起使用-name

find . ! -name '*.trg' ! -name . -maxdepth 1 -exec mv {} <tgtdir> \;

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

就像普通的一样mv,根据您tgtdir存在的位置,您可能也需要将其排除。

相关内容