파일이 생성 된 날짜를 가져 와서 bash 스크립트로 형식을 지정하고 싶습니다. 먼저 실행합니다.
filedate=(ls -ltr |awk '{print $6,$7}' |tail -n 1 )
이 명령은 파일의 날짜 만 변수로 저장하는 것입니다. 다음으로 date 명령을 실행하여 필요한 방식으로 날짜 형식을 지정합니다. 문제는 'date'명령을 사용하려면 날짜가 따옴표 안에 있어야한다는 것입니다. 그래서 나는 실행합니다.
formatedate=$(date -d \" $filedate \" +%Y%m%d )
이렇게하면 보통 "날짜 : 추가 피연산자 '4'"또는 "날짜 : 추가 피연산자 '"' "와 같은 오류가 계속 표시됩니다.
너무 많은 문제…
date
큰 따옴표가 필요하지 않습니다. 쉘은 그것들이 필요합니다 .
formatedate=$(date -d "$filedate" +%Y%m%d)
그러나 date -d
무엇으로 $filedate
확장 되는지 이해하지 못할 수 있습니다 . 일반적으로 먼저 필요 LC_TIME=C ls …
합니다.
그러나 파일 이름 (날짜가 아님)을 가져 오기 위해 최소한 ( 에서 지원할 수도 있고 지원하지 않을 수도 있음) 없이는 0 번째 자리에서 파싱해서는 안됩니다ls
.--quoting-style=shell-always
ls
이 답변 은 현재 작업 디렉토리에서 가장 최근 파일을 식별하는 신뢰할 수있는 방법을 제공합니다 (이것이 수행하려는 작업 인 것 같습니다). 파일 이름을 얻은 후를 사용 stat
하여 필요한 날짜를 가져 오십시오 (가급적 Epoch 이후 초 단위). 그런 다음 사용 date -d
.
# in Bash, GNU ls required
eval "files=($(ls -t --quoting-style=shell-always))"
if ((${#files[@]} > 0)); then
filedate="$(stat -c %Y "${files[0]}")"
formatedate="$(date -d "@$filedate" +%Y%m%d)"
echo "$formatedate"
fi
노트 ls --quoting-style=
는 휴대용이 아니고 휴대용 stat
이 아니며 휴대용 date -d
이 아닙니다. 바라건대 그들을 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다