터미널을 통해 동시 폴더 생성

터미널을 통해 동시 폴더 생성

다음과 같이 동시 폴더를 만들고 싶습니다 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표준 정렬이 불안정해집니다 (서식을 사용하는 경우).

관련 정보