我有多个具有唯一标识名称的目录。每个目录中都有由自动分析软件生成的其他相同子目录。其中一个子目录中有一个文件,我想挑选出来并移动到一个唯一的目录中,并以它们各自的父目录命名它们。
例如:
目录 = A001 A002 A003 A004
子目录 = A001/文件 A002/文件 A003/文件 A004/文件
每个子目录中的文件名相同 = A001/files/aseg.mgz A002/files/aseg.mgz 等等
唯一的新目录 = collated_aseg
我想将所有 aseg.mgz 文件移动到 collated_aseg 目录中并重命名它们,以便可以识别它们来自原始父目录:例如 A001_aseg.mgz(或等效文件)。
我曾经研究过类似的问题(在终端中将文件重命名为父目录的名称) - 但是,这些只有一层目录,而我的问题有两层。我想知道这是否可以轻松完成。
答案1
由于中间目录名称显然是恒定的,因此使用 shell 循环应该很简单:
for d in A???; do echo cp "$d/files/aseg.mgz" "collated_aseg/$d.mgz"; done
echo
一旦您对它所做的正确性感到满意,请删除。collated_aseg
目录必须已经存在。如果您确实想重命名(移动)而不是复制,请替换cp
为。mv