
예를 들어, 숫자 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/
.
이 솔루션은 필요한 폴더를 자동으로 생성하고 파일 접두사 범위를 지정할 필요가 없기 때문에 더 유연합니다.