소스 위치에 있는 모든 .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
주석 처리되었습니다 .