find를 사용하여 현재 터미널 세션이 시작된 이후 수정된 현재 디렉터리 이하의 모든 파일 목록을 표시하는 방법을 알아내려고 합니다.
분명히 재귀 조회를 사용하고 싶지만 로그인 이후 수정된 파일만 표시하는 결과를 어떻게 설명합니까? 로그인 시 항상 수정되는 다른 파일과 비교하여 확인하고 싶습니까? 내장된 메소드가 있나요?
다음과 같이 말해보세요.
find . -newer 'xxxx'
여기서 xxxx는 터미널 세션 시작 시 수정된 파일입니다. 그런데 어떤 파일이 이것을 할 수 있나요?
답변1
이 목적에 사용할 수 있는 특정 파일은 없지만 직접 추가하는 것은 쉽습니다.
당신 .profile
이나 .bash_profile
당신이 할 수 있는 모든 것에서
TIMEFILE=$HOME/.lastlogin
[[ ! -f $TIMEFILE ]] && touch $TIMEFILE
find $HOME -newer $TIMEFILE
touch $TIMEFILE
이 줄은 파일이 존재하지 않는 경우 불평을 [[
방지하기 위해 존재합니다 .find
편집: 아, 죄송합니다. 귀하의 질문을 약간 오해했을 수도 있습니다. 언제든지 이 명령을 실행할 수 있으므로 이 경우에는.bash_profile
touch $HOME/.lastlogin
이제 명령줄에서
find $HOME -newer $HOME/.lastlogin
touch
파일을 다시 전송하여 언제든지 타이머를 재설정 할 수 있습니다 .
답변2
Bash에서는 를 사용하여 로그인 이후 경과된 시간을 계산할 수 있습니다 last
.
TIMEDIFF=$(( ( $(date --date="$(last -1 | head -n 1 | tr -s " " | cut -d" " -f3-6)" +%s) - $(date +%s) ) / 60 ))
이렇게 하면 음수가 생성됩니다. (이는 다음 단계에서 유용할 것입니다.)
그런 다음 -mmin
명령에 시차와 매개변수를 추가합니다 find
.
find . -mmin $TIMEDIFF
물론 한 줄로 만들 수도 있습니다.