안녕하세요. .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 \;