특정 접미사가 붙은 파일을 디렉토리로 이동

특정 접미사가 붙은 파일을 디렉토리로 이동

안녕하세요. .ksh 스크립트에 다음 줄이 있습니다.

for file in $fileDirectory/*.$yesterdayDate
do
mv *.$yesterdayDate "$fileDirectory/$yesterdayDate"
done

그러나 이렇게 하면 다음과 같은 오류가 발생합니다.

mv: cannot stat ‘*.20200607’: No such file or directory
mv: cannot stat ‘*.20200607’: No such file or directory
mv: cannot stat ‘*.20200607’: No such file or directory

내가 뭘 잘못하고 있는지 아는 사람 있나요?

답변1

*.20200607현재 디렉터리에 일치하는 파일이 없습니다. 이는 전혀 놀라운 일이 아닐 수도 있습니다.

해당 변수 주위에 루프를 구축 file하지만 절대 사용하지 마십시오.

for file in "$fileDirectory"/*."$yesterdayDate"; do
    mv "$file" "$fileDirectory/$yesterdayDate"
done

그런데 왜 그냥은 안 되지?

mv "$fileDirectory"/*."$yesterdayDate" "$fileDirectory/$yesterdayDate"

? 파일이 너무 많아서 mv전화를 걸 수 없나요? 아마도 그렇지 않을 것입니다.

답변2

당신은 사용해야합니다

mv $file "$fileDirectory/$yesterdayDate"

for 루프 내부

또는

다음 명령을 사용하여 이 작업을 수행할 수 있습니다 find.

find $fileDirectory -name \*.$yesterdayDate -type f -exec mv {} $fileDirectory/$yesterdayDate \;

관련 정보