일반적으로 date +%d
현재 날짜 2017년 8월 10일에 대한 출력을 제공합니다. 08
그런데 해당 경로에서 실행하면 ls -lrt
날짜 형식이 다음과 같으니 Oct 8 15:03
어떻게 하면 현재 날짜의 파일을 얻을 수 있을까요?
나는 명령을 사용하고 있습니다
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
하지만 오늘 날짜(2017년 8월 10일)에 대한 파일은 제공되지 않지만 모든 달의 날짜 10 - 31에 대한 올바른 출력은 제공됩니다.
답변1
이것은 약간의 속임수이지만 작동합니다.
특정 타임스탬프(예: 자정)가 있는 빈 참조 파일을 만드는 것부터 시작하세요.
touch -d "$(date +%FT00:00:00)" /tmp/midnight
그런 다음 해당 파일보다 최신 파일을 찾으십시오.
find . -type f -newer /tmp/midnight
경로 이름 대신 ls
유사한 출력을 원하는 경우 :find
find . -type f -newer /tmp/midnight -ls
패턴과 일치하는 파일을 찾으려면 다음을 수행하십시오 XYZ.LOG*
.
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
GNU가 있으면 find
임시 파일을 무시하고 다음을 사용할 수 있습니다.
find . -type f -newermt 0
파일 수정은 자정부터 시작되었습니다.
답변2
이를 사용하여 stat(1)
파일 수정 시간을 얻을 수 있지만 이식 가능하지는 않습니다.
리눅스의 경우:
$ stat -c %y some_file
2017-09-23 10:24:09.880806666 +0200
$ date -d @$(stat -c %Y some_file) +%d-%m-%Y
23-09-2017
BSD에서:
$ stat -f %Sm -t %d-%m-%Y some_file
23-09-2017
답변3
현재 날짜의 파일을 얻는 방법은 무엇입니까?
엘에스이 명령은 --time-style
선택적으로 특정 형식으로 시간을 인쇄할 수 있습니다.
ls -l --time-style=+'%d-%m-%Y' | awk -v d=$(date +%d-%m-%Y) '$6==d'
--time-style
=스타일
에서는-l
STYLE 스타일을 사용하여 시간을 표시합니다: full-iso, long-iso, iso, locale 또는 +FORMAT 해석은'date'
;
답변4
시도해 보셨나요:
echo `date +'%Y-%m-%d'`*