【发布时间】:2019-11-27 21:40:04
【问题描述】:
我有一种情况,我有一系列文件如下:
1234_A_data1_v1.ext
1234_A_data1_v2.ext
1234_A_data2_v1.ext
1234_A_data2_v2.ext
1234_B_data1_v1.ext
1234_B_data1_v2.ext
1234_B_data2_v1.ext
1234_B_data2_v2.ext
1234_AA_data1_v1.ext
1234_AA_data1_v2.ext
1234_AA_data2_v1.ext
1234_AA_data2_v2.ext
1234_BB_data1_v1.ext
1234_BB_data1_v2.ext
1234_BB_data2_v1.ext
1234_BB_data2_v2.ext
正则表达式字符串1234_[A-Z]+ 标识数据集。我想为每个这样的数据集创建文件夹(基于文件名),然后将相应的文件移动到所述文件夹中。例如,1234_A_data1_v1.ext、1234_A_data1_v2.ext、1234_A_data2_v1.ext、1234_A_data2_v2.ext 将放在文件夹 1234_A 下。
我设法创建了如下文件夹:
grep -o -E '^[0-9]+_[A-Z]+' seqnames | xargs echo | xargs mkdir
这给了我:
1234_A
1234_A_data1_v1.ext
1234_A_data1_v2.ext
1234_A_data2_v1.ext
1234_A_data2_v2.ext
1234_B
1234_B_data1_v1.ext
1234_B_data1_v2.ext
1234_B_data2_v1.ext
1234_B_data2_v2.ext
1234_AA
1234_AA_data1_v1.ext
1234_AA_data1_v2.ext
1234_AA_data2_v1.ext
1234_AA_data2_v2.ext
1234_BB
1234_BB_data1_v1.ext
1234_BB_data1_v2.ext
1234_BB_data2_v1.ext
1234_BB_data2_v2.ext
这一切都很好。但是现在,我不知道如何将文件移动到各自的文件夹中,我很迷茫。
任何关于我如何实现这一点的指针将不胜感激。
特别是,有什么方法可以做类似mv *<pattern>*filename *<pattern>*destination 的事情吗?我也有兴趣了解是否有其他简洁(也许是正确的?)方法来完成这项任务。
【问题讨论】: