如何建立循環將一系列文件複製到其相容資料夾

如何建立循環將一系列文件複製到其相容資料夾

例如,從數字 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/

此解決方案更加靈活,因為它會自動建立必要的資料夾,並且不需要給出文件前綴範圍。

相關內容