
Например, файлы, начинающиеся с номера 1, в папке номер 1 и т. д., я могу сделать это для каждого из них с помощью следующей команды:
find /home/ -name '1_*_*_*_*_*_*.nii' -exec cp '{}' /home/1 ';'
решение1
Вы имеете в виду что-то вроде этого (от 1 до 100)?
for i in {1..100}; do
find /home/ -name "${i}_*_*_*_*_*_*.nii" -exec cp '{}' /home/${i} \;
done
решение2
В исходном каталоге запустите этот скрипт:
for name in *.nii ; # find all files with a pattern and process its
do
directory="${name%%_*}/"
if [ ! -d "$directory" ]; then mkdir "$directory" ; fi # make directory if not exist
cp "$name" "$directory" ; # copy file into the directory
done
Удаляет ${name%%_*}
самый длинный совпадающий шаблон суффикса. В этом случае это будут все символы перед первым _
. Результатом замены для имени 1_2_3.nii
будет cp 1_2_3.nii 1/
.
Это решение более гибкое, поскольку оно автоматически создает необходимые папки и нет необходимости указывать префикс диапазона файлов.