作为一个 Linux 菜鸟(想学习!),我一直在浏览和搜索,但遗憾的是无法为我的问题找到正确的解决方案。我有一个包含几个文件(很多)的目录,我想将它们移动到不同的目录(也要做)。更具体:
我的目录是:/data/myowndir/ 并且每个文件都有名称,例如
- CV02_T1_[随机字符].REC
- PM03_T2_[随机字符].PAR
我想通过它们各自的前 7 个字符(文件名)将每个文件移动到该目录内的子目录,例如:
- CV02_T1_*.REC ---> /data/myowndir/CV02_T1
- CV02_T1_*.PAR ---> /data/myowndir/CV02_T1(与之前的目录相同)
- PM03_T1_*.REC ---> /data/myowndir/PM03_T1
- PV05_T2_*.PAR ---> /data/myowndir/PV05_T2
- 等等
所以我想移动多个文件并创建这些多个目录。
但是,有两个限制。
- 该目录还包含扩展名为 .nii 的文件,我不想移动这些文件。
- 其次,一些文件的文件名包含字符串sT13,我想将其移至单独的目录,例如:
PM03_T2_[随机字符]sT13[随机字符].PAR ---> /data/myowndir/PM03_struc
(所以只有文件名的前 5 个字符和附加字符串 [struc] 添加到新目录名)
有人知道怎么做吗?我应该编写脚本还是可以从命令终端执行此操作?我一直在阅读类似问题的其他答案以及 mv、mmv、find、while、for、rsync 的手册页;但我不知道如何把它放在一起。
编辑:如果我的问题暗示的过于具体,那么让我先重新措辞以使其更清楚并放弃约束:
如何根据文件名的第一部分将多个文件从一个目录移动到多个子目录中?