내 스크립트는 다음과 같습니다
strenggen ( ) { something; }
strengen 1
strengen 2
strengen 3
strengen 4
strengen 5
etc..
strengen?string=1
etc. 라는 디렉토리에 일부 파일을 추가합니다 . strengen?string=2
내가 하고 싶은 것은 스크립트를 종료한 다음 다시 실행하면 13, 14, 60000 또는 140000 중 마지막으로 실행된 숫자를 찾도록 하는 것입니다. 파일 이름에 마지막 번호가 포함되어 있으므로 마지막으로 수정된 파일을 찾아 해당 번호(예: find . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" "
또는 이와 유사한 것)를 복사할 수 있다고 생각했습니다. 문자열을 sed하면 시작 번호를 얻을 수 있지만 다른 줄을 무시하는 방법을 모르겠습니다.
답변1
다음 명령은 최신 "strengen" 파일의 번호를 변수에 넣습니다 $LATEST
.
LATEST=$(/bin/ls -1t | grep `^strengen` | head -1 | sed -e 's/strengen.*=//')
여기서는 출력에 영향을 미칠 수 있는 별칭을 제거하기 위해 /bin/ls
별칭뿐만 아니라 매우 일반적인 별칭도 사용 하고 있습니다.ls
ls -1
ls
또한 ls
내가 사용한 옵션 은 (문자 ) -1
대신 (숫자 1) 입니다 . 이는 한 줄에 하나의 파일을 나열하라는 의미입니다. 이 옵션은 가장 최근 항목부터 시간순으로 정렬함을 나타냅니다.-l
l
ls
-t
ls
또 다른 옵션은 함수 상단에 다음과 같은 것을 넣는 것입니다 strenggen()
.
[ -e "strengen?string=$1" ] && return
파일이 이미 존재하는 경우 아무런 작업도 수행하지 않고 함수가 즉시 반환됩니다.