내 목표는 이번 달에 디렉터리에 생성된 파일을 가져오는 것입니다.
명령이 올바른 것 같지만 결과가 렌더링되지 않습니다.
Date=`date '+%b'`
echo $Date
Oct
ls -l | awk -v d="$Date" '/d/ {print $NF}'
답변1
다음과 같이 사용해야 합니다.
ls -l | awk -v d="$Date" '$0 ~ d {print $NF}'
설명은여기
find
하지만 스크립트에 사용하는 것이 더 나을 수도 있습니다.
find . -maxdepth 1 -type f -daystart -ctime -`date "+%d"`
awk
대신 클래식이 있는 경우 gawk
:
find * -prune -type f -cmin -`date '+%d %H %M' | awk '{print ($1*24+$2)*60+$3}'`
답변2
여기서 문제는 해당 이름을 나타내는 변수를 원하는지 패턴 내부에서 awk
알 수 있는 방법이 없다는 것입니다. 리터럴과 일치시키려고 합니다 . 대신 매개변수 확장을 사용할 수 있습니다.d
awk
d
ls -l | awk "/$Date/ {print \$NF}"
즉, 주목해야 할 두 가지 사항이 있습니다.
출력에 나열된 시간은
ls -l
타임스탬프입니다. 즉, 파일이 생성된 때가 아니라 파일이 마지막으로 수정된 시간입니다. 파일 생성 시간은기껏해야 신뢰할 수 없음최악의 경우에는 사용할 수 없습니다.-
find
대신 다음과 같이 사용하십시오 .치리코프의 답변.