Linux에서 파일의 현재 날짜를 얻으시겠습니까?

Linux에서 파일의 현재 날짜를 얻으시겠습니까?

일반적으로 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

파일 수정은 자정부터 시작되었습니다.


관련된:왜 `ls`를 구문 분석하지 *않나요*?

답변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=스타일
에서는 -lSTYLE 스타일을 사용하여 시간을 표시합니다: full-iso, long-iso, iso, locale 또는 +FORMAT 해석은 'date';

답변4

시도해 보셨나요:

echo `date +'%Y-%m-%d'`*

관련 정보