소스 디렉터리에서 대상 디렉터리로 파일을 이동하는 쉘 스크립트

소스 디렉터리에서 대상 디렉터리로 파일을 이동하는 쉘 스크립트

소스 위치에 있는 모든 .csv 파일을 대상 위치로 이동하는 셸 스크립트를 작성해 보세요. 조건은 해당 .txt 파일이 있는 .csv 파일만 이동해야 한다는 것입니다.

예: source:/home/source에는 abc.csv,abc.txt,def.csv,def.txt,efg.csv가 있으므로 조건에 따라 abc.csv,def.csv만 대상 디렉터리로 이동하고 efg로 이동해야 합니다. csv는 해당 efg.txt 파일이 아니므로 대상 디렉터리로 이동하면 안 됩니다.

답변1

파일을 반복하면서 동일한 파일 이름 줄기를 가진 파일이 csv있는지 테스트합니다 . txt있는 경우 csv파일이 이동됩니다.

sourcedir=/some/dir
destdir=/some/other/dir

for csvfile in "$sourcedir"/*.csv; do
    txtfile="${csvfile%.csv}.txt"
    if [ -e "$txtfile" ]; then
        printf 'Will move %s to %s\n' "$csvfile" "$destdir"
        # mv -i "$csvfile" "$destdir"
    fi
done

매개변수 확장은 현재 파일 이름의 끝 부분을 ${csvfile%.csv}.txt제거 하고 ..csv$csvfile.txt

이 명령은 보안상의 이유로 mv주석 처리되었습니다 .

관련 정보