
내 목표는 이번 달에 생성된 파일을 디렉터리에 저장하는 것입니다.
명령은 정확하지만 결과가 렌더링되지 않는 것 같습니다.
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
대신 다음과 같이 사용하세요 .dchirikov의 답변.