gpt4 book ai didi

linux - 如何按主题编号(文件名前缀)对文件进行排序并从中创建新文件夹?

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:17 25 4
gpt4 key购买 nike

该目录名为Structural/,这里有所有 T1 扫描:

[1900140e@psych-sl04 Structural]$ ls

145951_DTI_T1.nii
125645_DTI_T1.nii
164934_DTI_T1.nii ...

现在对于这个目录,我需要为每个主题创建一个新的子目录,如下所示:

Structural/145951/mri/orig/145951_DTI_T1.niiStructural/125645/mri/orig/125645_DTI_T1.nii

So I need a new folder named after the subject ID, and within that directory two more new subdirectories where the (renamed) file is stored.

The directory where my files are stored now:

/home/1900140e/collab/3Sites_mat/Site1/Structural/

目录应该是:

/home/1900140e/collab/3Sites_mat/Site1/Structural/<subjID>/145951/mri/orig/

如有任何帮助,我们将不胜感激!

我读到了有关将 mv 命令和重命名命令与正则表达式结合使用的信息,但不确定当每个文件的日期和 subjectID 都不同时如何使用它,因为我不知道使用什么作为迭代器来循环文件(如果有必要的话)..

到目前为止我所尝试的包括将文件名打印到文本文件并尝试循环所有行以创建单独的文件夹,但我觉得应该有一种更有效的方法来做到这一点。

最佳答案

如果我理解正确,以下内容应该有效:

for i in *.nii; do
dir="${i%%_*}/mri/orig"
mkdir -p -- "$dir" && mv -- "$i" "$dir"
done

此处${i%%_*} expandsi 的内容,任何匹配 _* 的尾随子字符串被截断,即它是 $i 的值,直到第一个下划线。

关于linux - 如何按主题编号(文件名前缀)对文件进行排序并从中创建新文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com