조건이 있는 단일 행에서 찾기, 압축 및 삭제

조건이 있는 단일 행에서 찾기, 압축 및 삭제

어제 생성된 파일을 조건에 따라 압축, 이동, 삭제한 파일을 반복적으로 찾아주는 스크립트를 한 줄로 줄이려고 합니다.

나는 다음과 같은 구조를 가지고 있습니다 :

../main -> child1 (content: file01.csv, file02.xlsx, file03_20201028.xls, file04_20201028.xls)
      |____ child2 (content: file05.xls, file06.xlsx, file07_20201028)
              |___  child3 (file08.xls, file09.xlsx, file10_20201028.xls, file11_20201028.xls)

나는 이걸했다:

find $ORIGINPATH -type f -mtime -1 | zip -@ $ORIGINPATH/Backup_$YESTERDAY.zip
find $ORIGINPATH -type f -iname *$YESTERDAY* -exec rm -f {} \;
mv $ORIGINPATH/Backup_$YESTERDAY.zip $DESTINATIONPATH

이름에 날짜가 포함된 파일을 삭제하고 나머지는 유지해야 합니다.

미리 감사드립니다!

답변1

한 줄의 경우 다음과 같이 작동합니다.

find $ORIGIN -type f -mtime -1 -exec zip -u ${DEST}/backup_${YESTERDAY}.zip '{}' \; -delete

zip기존 아카이브는 일반적으로 업데이트되므로 첫 번째 파일에서 오류가 발생합니다 -u(그러나 존재하지 않는 경우 아카이브를 만들고 경고를 반환합니다).

-mtime -1날짜는 중요하지 않지만 지난 24시간은 중요합니다 ! 따라서 23:59h에 실행하면 제거됩니다.오늘의문서! 날짜 문자열을 검색하려면 다음 옵션을 사용하십시오.

문자열이 다음과 같이 정의되었다고 가정합니다.YESTERDAY=20201028

find $ORIGIN -type f -name \*${YESTERDAY}\*

누락된 큰 따옴표와 별표를 이스케이프 처리해야 하는 필요성에 유의하세요.

관련 정보