나는 지금까지 내가 한 일을 설명하려고 노력할 것입니다.
먼저 다음 코드를 사용하여 조사하려는 디렉터리 목록을 작성했습니다.
$MDIR="/home/user/scripts/fcron"
DIRS=`ls -l $MDIR | egrep '^d' | awk '{print $9}' | grep ^$ts-`
DIRS 목록에는 이제 디렉터리가 포함됩니다.이름형태:
NETGEAR-2013-06-30
NETGEAR-2013-07-01
........
NETGEAR-2013-05-05
이제 이 모든 디렉토리를 확인해야 합니다(목록 디렉토리에 포함됨), 1개월 전(예: 27일 또는 29일)보다 새로운 항목을 찾아야 합니다. 일치하는 항목을 찾으면 스크립트를 종료해야 합니다.
"의사 코드"에서는 다음과 같이 작성합니다.
for dir is DIRS:
if dir is newer than 30 days old:
exit the script
else:
continue
내 어려움은 bash 스크립트에서 위의 "의사 코드"를 번역하는 데 있습니다.
/////최신 업데이트/////
좋습니다. 해당 섹션을 의사 코드로 업데이트했습니다.
for DIR is $DIRS;
do
if (( $(stat -c %Y "$dir") < $(date +%s) - 3600*24*30 )); then
echo "exiting!!"
exit
else
continue
fi
done
하지만 이제 나는 이것을 얻습니다:
line 40: syntax error: unexpected word (expecting "do")
답변1
이 시도:
dirs='dir1 dir2 dir3'
for dir is $dirs; do
if (( $(stat -c %Y "$dir") < $(date +%s) - 3600*24*30 )); then
exit
else
continue
fi
done
답변2
일반적인 방법:
find . -mindepth 1 -maxdepth 1 -type d \
-newermt "$(date --date="1 month ago 00:00" --rfc-3339=seconds)"
다음을 사용하세요 DIRS
:
find $DIRS -maxdepth 0 -type d \
-newermt "$(date --date="1 month ago 00:00" --rfc-3339=seconds)"