해당 이름 으로 Aug 7
생성된 파일을 삭제하는 방법DBG_A_sql*
/tmp
예를 들어:
-rw-r--r-- 1 root root 51091 Aug 7 11:22 DBG_A_sql.2135
-rw-r--r-- 1 root root 15283 Aug 7 11:22 DBG_A_sql.2373
-rw-r--r-- 1 root root 51091 Aug 7 11:22 DBG_A_sql.2278
-rw-r--r-- 1 root root 9103 Aug 7 11:22 DBG_A_sql.2485
-rw-r--r-- 1 root root 9116 Aug 7 11:22 DBG_A_sql.2573
-rw-r--r-- 1 root root 9140 Aug 7 11:22 DBG_A_sql.2679
-rw-r--r-- 1 root root 15695 Aug 7 11:22 DBG_A_sql.2897
답변1
당신은 그것을 사용할 수 있습니다 find
. 귀하의 요구 사항과 목적에 따라 날짜를 계산하고,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -print
확인 후 삭제하시고,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -delete
답변2
먼저 파일을 찾아주세요만들어진생성시간은 보통 어디에도 저장되지 않거나 구하기 어렵기 때문에 특정 시간에 하기는 좀 어렵습니다. 당신이 가지고 있는 것은 inode의 변경 사항에 따라 업데이트된 "변경된" 시간인 mtime
마지막 수정 시간 입니다. ctime
시간을 수정하고 싶다고 가정합니다.
find
자정에 생성된 파일을 제대로 처리하기는 어려울 것 같아서 특정 날짜에 수정된 파일을 찾는 것은 다소 흥미로운 일입니다 .
상대 시간(예: 어제)을 알고 있다면 를 사용할 수 있지만
find -daystart -mtime 1
파일이 잘못된 자정인 Aug 8 00:00
. 그러나 이것은 작동하는 것 같습니다.
find dir/ -daystart -mtime +0 \! -mtime +1 -ls
상대 시간을 계산하고 싶지 않고 다음과 같은 경우가 find
있습니다 -newerXY
.
find dir/ -newermt 'Aug 7 00:00' \! -newermt 'Aug 8 00:00' -ls
다시 말하지만, 비교가 "최신 또는 기존"이 아니라 "최신"이기 때문에 자정에 생성된 파일에 대해 오류가 발생합니다. 시스템에 1초 미만의 정밀도 타임스탬프가 있는 경우 이를 달성하기 어려울 수 있지만 다음 touch
에서 생성된 파일을 사용하여 테스트하면 이런 일이 발생합니다.
까다로운 해결책은 다음과 같습니다.
find dir/ -newermt 'Aug 6 23:59:59.999999999' \! -newermt 'Aug 7 23:59:59.999999999' -ls
-name "DBG_A_sql*"
어쨌든 올바른 이름을 가진 파일만 얻으려면 필요한 항목을 추가하십시오 . -ls
마지막에 있는 파일을 교체하여 -delete
파일을 나열하는 대신 삭제할 수 있습니다 . ( -ls
및 OS X의 적어도 GNU 찾기 및 BSD 찾기에 존재합니다. -delete
)-newerXY
물론 날짜의 텍스트 표현을 실제로 구문 분석할 수 있지만 ls
일부 광대가 인쇄할 수 없는 문자가 포함된 파일을 생성하는 경우 올바르게 구문 분석하기 어려울 것입니다. 물론 예제 파일에는 그러한 파일이 없지만 일반적으로 누구나 특히 /tmp
.
( | xargs rm
그러나 파일을 놓칠 수 있으며 파일 이름에는 슬래시가 포함될 수 없으므로 누군가가 다른 디렉토리를 가리키는 것이 어려울 것입니다 rm
.)
답변3
그냥 bash 루프
for file in /tmp/DBG_A_sql* ; do
[ "$(date -I -r "$file")" == "2016-08-07" ] && rm "$file"
done
답변4
통과했다고 가정만들어진, 네 말 뜻은마지막 변경(보고된 시간입니다 ls -l
.) 여기서는 다음과 같습니다 zsh
.
autoload age # best in ~/.zshrc
rm /tmp/DBG_A_sql*(e:age 2016-08-07:)