如何使用双通配符移动多个文件夹?

如何使用双通配符移动多个文件夹?

我正在尝试移动所有包含数字 1 的文件夹(glove.6B.60d.txt)(model)

mv "./*.txt)(1)(m*" "/home/e1"

但我收到了错误信息

mv: cannot stat './*.txt)(1)(m*': No such file or directory

我做错了什么?我在同一个文件夹中

在此处输入图片描述

答案1

引号内的 Glob 不会展开 - 你需要类似

./*".txt)(1)(m"*

或者

./*.txt")(1)("m*

或者

./*.txt\)\(1\)\(m*

答案2

这是最不幸的目录名称选择,因为您需要在这些 shell 命令中使用一定程度的引号;但引号也会阻止通配符扩展。

但你可以将多个部分引用的字符串拼凑在一起;例如

mv  *".txt)("1")(model"*    /home/e1

或者简化为

mv *.txt??1??model*    /home/e1

这假设您始终有 *.txt,然后是任意两个字符,然后是数字 1,然后是任意两个字符,然后是模型*,这应该可以很好地工作。

甚至改进它以接受全部一次输入数字:

mv *.txt??[0-9]??model*    /home/e1

请注意,引号用于保护shell 中的特殊字符,但在这里你通配符扩展。

相关内容