如何创建循环将一系列文件复制到其兼容文件夹

如何创建循环将一系列文件复制到其兼容文件夹

例如,从数字 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%%_*}最长的匹配后缀模式。在这种情况下,它将是 first 之前的所有符号_。名称替换的结果1_2_3.nii将是cp 1_2_3.nii 1/

此解决方案更加灵活,因为它会自动创建必要的文件夹,并且不需要给出文件前缀范围。

相关内容