다음과 같이 동시 폴더를 만들고 싶습니다 crontab
. 매주 월요일 탭은 새 폴더를 만들어야 하지만 숫자를 추가해야 합니다. 그렇지 않으면 서로 덮어쓰게 됩니다.
이 숫자는 매주 월요일 날짜일 수 있습니다.
--
Week one makes folder:
Monday_01
--
Week two makes folder:
Monday_02
--
Week three makes folder:
Monday_03
--
온라인에서 이에 대한 정보를 찾을 수 없습니다.
답변1
여러 가지 가능성이 있습니다. "Monday_"로 가득 차 계속 증가하는 디렉토리는 탐색하기가 쉽지 않기 때문에 다음과 같이 설정할 수 있습니다( tmp
원하는 기본 디렉토리로 변경).
1 0 * * 1 mkdir -p "/tmp/$(date +%Y)/$(date +%A)_$(date +%V)"
그래서 나는 다음과 같은 결과를 얻을 것입니다 :
2020/
Monday_01
Monday_02
etc.
여기서 숫자는 주 번호에 해당합니다. 이렇게 하면 연도별로 카탈로그를 나열할 수 있고 숫자 자체가 긍정적인 내용을 전달할 수 있습니다.
다음으로 가장 좋은 방법은 선택한 언어로 스크립트를 작성하고 스크립트 기능을 사용하여 숫자를 구문 분석하고 증가시키는 것입니다. 이 접근 방식은 또한 형식과 관련된 몇 가지 잠재적인 문제(누적된 디렉터리가 >99에 도달하면 어떻게 되나요? 그러면 _100이 되고 표준 정렬이 지저분해지기 시작할 것 같습니다)를 처리할 뿐만 아니라 (아마도) 더 나은 오류 처리를 제공합니다. .
cron
(글쎄, 그렇습니다) 영역에 머물러야 한다면 이 접근 방식이 작동할 것입니다. 단, 스크립트를 작성하는 것보다 오류 검사가 크게 줄어듭니다.
val=$(/bin/ls -1rtd /tmp/Monday_* | tail -n1 | cut -d'_' -f2) \
&& printf -v nv "%02d" $((10#$val + 1)) \
&& mkdir "/tmp/Monday_$nv"
이는 최신 1개의 "Monday_*" 디렉터리를 찾고 ("/tmp"를 기본 디렉터리로 조정) 밑줄 문자("_")로 분할하고 증분 값의 형식을 지정하여 수행됩니다(다시 말하지만 한 번에 어떤 일이 발생해야 하는지는 확실하지 않음). 디렉토리 무엇) 일하러 오세요. 99)에 도달한 다음 디렉터리를 만듭니다. 값(그렇지 않으면 8진수로 해석될 수 있음)을 10#
도입할 때 발생하는 문제를 피해야 합니다 .0
몇 가지 예제 출력 및 표준 정렬의 불안정성:
/tmp/Monday_01/
/tmp/Monday_02/
/tmp/Monday_03/
/tmp/Monday_04/
/tmp/Monday_05/
/tmp/Monday_06/
/tmp/Monday_07/
/tmp/Monday_08/
/tmp/Monday_09/
/tmp/Monday_10/
/tmp/Monday_100/
/tmp/Monday_101/
/tmp/Monday_102/
/tmp/Monday_103/
/tmp/Monday_104/
/tmp/Monday_105/
/tmp/Monday_106/
/tmp/Monday_107/
/tmp/Monday_108/
/tmp/Monday_109/
/tmp/Monday_11/
이 함수는 매주 월요일 아침 자정 1분 후 동일한 크론 형식(1 0 * * 1)을 사용하여 호출됩니다.
1여기서 최신은 생성 시간으로 정의됩니다. 요구 사항은 매주 월요일에 새 디렉터리를 생성하는 것이므로 가장 늦은 시간을 사용하는 것이 좋습니다. 앞서 언급했듯이 파일이 99개가 넘으면 %02
표준 정렬이 불안정해집니다 (서식을 사용하는 경우).