Bash 将匹配模式的文件移动到新文件夹

Bash 将匹配模式的文件移动到新文件夹

我知道有与我类似的问题,但我根本不理解正则表达式,所以这是我的新问题:

我的文件夹中有一堆文件。我需要_GLM_使用 Bash 将一些文件移动到另一个与特定模式(任何带有“”的模式)匹配的文件夹中。调用源文件夹/SingleScale,目标文件为/NotUsing.这是一个示例文件名:

/SingleScale/Leopardus wiedii_GLM_canhtglad_s4_mean.csv

我试过:

cp /SingleScale/*_GLM_*.csv /NotUsing/

答案1

当心 :

  • 在 Bash 中,使用通配符(例如*)来选择哪些文件cpmv, ... 不是常用表达。这是一场狂欢内部模式匹配系统细节,详细信息并举例说明)。
  • 您的文件名称中包含空格,这很好,但在使用 shell 时可能会使事情变得复杂:
    • 空格字符是字段分隔符:

      cp file1 file2 myDir
      

      将复制文件file1file2复制到myDir目录中,同时:

      cp Leopardus wiedii_GLM_canhtglad_s4_mean.csv myDir
      

      将会失败,因为没有Leopardusnorwiedii_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实际移动文件)。您有更多详细信息/错误消息吗?

相关内容