.log
A 디렉터리에서 B 디렉터리로 확장자를 가진 모든 파일을 복사하는 작은 스크립트를 작성하고 싶습니다 . 그래서 내 디렉토리 A에는 다음이 있습니다.
ls :
a.log
b.log
c.log
내가 달성하려는 의사 코드는 다음과 같습니다.
foreach *.log x do :
if [stat -c %s pk_copylogs < 10485760]; then
cp A/x B/x
else
read vANSWER?" >> File x is bigger than 10 MB, would you like to copy it anyway ? Type YES or NO : "
if [ $vANSWER = "YES"]; then
cp A/x B/x
fi
fi
여기서 내 주요 문제는 내 foreach *.log
.
답변1
다음 두 가지 명령을 사용하여 이 작업을 수행할 수 있습니다.
find A -name "*.log" -size -10485760c -exec cp {} B/ +
find A -name "*.log" -size +10485760c -exec cp -i {} B/ +
첫 번째는 10485760보다 작은 파일을 찾아서 무분별하게 복사합니다. 두 번째는 10485760보다 큰 파일을 찾아서 대화형으로 복사하여 각 복사본을 묻는 메시지를 표시합니다.
단일 명령을 사용하여 필요에 따라 실행할 수 있도록 이를 쉘 스크립트나 함수에 넣습니다.