파일 이름을 기준으로 파일 이동

파일 이름을 기준으로 파일 이동

파일 이름을 기준으로 동일한 이름의 폴더로 이동하려는 .tif 파일이 포함된 폴더가 있습니다. 샘플 파일 123456789_002.tif --> dir 113456789.

_ 앞의 파일의 첫 번째 부분을 어떻게 가져와서 파일을 이동하는 데 사용할 수 있나요?

답변1

파일 이름이 변수에 저장된 경우 bash 및 유사한 쉘에서 $filename첫 번째 밑줄 앞 부분을 사용할 수 있습니다._${filename%%_*}

작은 스크립트는 다음과 같습니다.

#!/bin/bash
# loop over all tif files
for filename in *.tif ; do
    # extract portion before _
    dirname="${filename%%_*}"
    # ensure destination folder exists
    mkdir -p "$dirname/"
    # move the file
    mv "$filename" "$dirname/" 
done

답변2

_more_stuff를 아무것도 없는 것으로 바꾸고 첫 번째 부분만 유지할 수 있습니다. 예를 들어 firstpart=${i/_?*/}와 같이 변수 i에 파일 이름을 사용합니다.

for i in *_*.tif; do 
    fp="${i/_?*/}"
    mkdir "$fp" 2>/dev/null # ignore errors else this will complain for 2nd etc files
    mv "$i" "$fp"
done
# do remaining .tif files, with no "_"
for i in *.tif; do 
    fp="${i/.tif/}"
    mkdir "$fp" 2>/dev/null # ignore errors else this will complain for 2nd etc files
    mv "$i" "$fp"
done

관련 정보