Как сделать скрипт, который копирует файлы из разных тематических папок?
У меня проблемы с настройкой скрипта, который копирует и конвертирует файлы. То, что я в основном хочу, это сценарий, который берет тему, например
folder/subjects/subject_name/mri/norm.mgz
копирует этот файл в
folder/investigation_folder/fs_norms/subject_name/
и преобразует norm.mgz
в norm.nii
с помощью mri_convert
и делает это с +300 предметами (в папке предметов).
Это должно быть довольно просто... Кто-нибудь может мне здесь помочь?
Я большой новичок! Это пример того, что я хотел бы сделать - с одной темой:
mkdir /mnt/projects/Project_folder/thalamic_subnuclei/fs_norms/gXXX/
cp /mnt/projects/Project_folder/subjects/gXXX/mri/norm.mgz /mnt/projects/Project_folder/thalamic_subnuclei/fs_norms/gXXX/
mri_convert mnt/projects/Project_folder/thalamic_subnuclei/fs_norms/gXXX/norm.mgz mnt/projects/Project_folder/thalamic_subnuclei/fs_norms/gXXX/norm.nii
Все мои предметы называются г, за которыми следуют 3-4 числа. Теперь мне нужно настроить цикл, который делает это с +300 предметов в /mnt/projects/Project_folder/subjects/
папка.
1 ответ
Решение
Вот пример того, как цикл FOR может быть применен в скрипте bash для решения этой задачи:
#!/bin/bash
# Execute do-done inner part for each "item" under "folder/subjects/"
for subject in folder/subjects/*
do
# Check whether the source file exists
if [[ -f ${subject}/mri/norm.mgz ]]
then
# ${subject##*/} will cut the parent path from the value of the variable '$subject'
echo "Processing: ${subject##*/}"
# Create the new subject directory
mkdir -p "folder/investigation_folder/fs_norms/${subject##*/}"
# Copy the .mgz file into the new directory
cp "${subject}/mri/norm.mgz" "folder/investigation_folder/fs_norms/${subject##*/}/"
# Do the conversion to .nii (I'm not sure this is the correct syntax of mri_convert that you are using)
mri_convert "folder/investigation_folder/fs_norms/${subject##*/}/norm.mgz" "folder/investigation_folder/fs_norms/${subject##*/}/norm.nii"
fi
done