일련의 파일을 호환되는 폴더에 복사하는 루프를 만드는 방법

일련의 파일을 호환되는 폴더에 복사하는 루프를 만드는 방법

예를 들어, 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/.

이 솔루션은 필요한 폴더를 자동으로 생성하고 파일 접두사 범위를 제공할 필요가 없으므로 더욱 유연합니다.

관련 정보