我知道有与我类似的问题,但我根本不理解正则表达式,所以这是我的新问题:
我的文件夹中有一堆文件。我需要_GLM_
使用 Bash 将一些文件移动到另一个与特定模式(任何带有“”的模式)匹配的文件夹中。调用源文件夹/SingleScale
,目标文件为/NotUsing
.这是一个示例文件名:
/SingleScale/Leopardus wiedii_GLM_canhtglad_s4_mean.csv
我试过:
cp /SingleScale/*_GLM_*.csv /NotUsing/
答案1
当心 :
- 在 Bash 中,使用通配符(例如
*
)来选择哪些文件cp
,mv
, ... 不是常用表达。这是一场狂欢内部模式匹配系统(细节,详细信息并举例说明)。 - 您的文件名称中包含空格,这很好,但在使用 shell 时可能会使事情变得复杂:
空格字符是字段分隔符:
cp file1 file2 myDir
将复制文件
file1
并file2
复制到myDir
目录中,同时:cp Leopardus wiedii_GLM_canhtglad_s4_mean.csv myDir
将会失败,因为没有
Leopardus
norwiedii_GLM_canhtglad_s4_mean.csv
文件。可以解决这个问题:
带引号(在这种情况下简单或双引号没有区别):
cp 'Leopardus wiedii_GLM_canhtglad_s4_mean.csv' myDir
缺点是通配符与引号冲突......
通过使用转义空格字符
\
:cp Leopardus\ wiedii_GLM_canhtglad_s4_mean.csv myDir
除此之外,您的命令看起来不错(除了使用mv
而不是cp
实际移动文件)。您有更多详细信息/错误消息吗?