주어진 확장자를 가진 모든 파일을 찾고 결과를 확인하여 all.txt에 추가하려고 합니다.
set -xe
EXT="${1}"
TYPE="${2}"
COMP="${3}"
find -iname \*.${EXT} -print0 | xargs -0 ls -l --time-style="+%b %Y" | awk '{print $NF,$3,$5,$6,$7}' OFS="\t" > ${EXT}.txt
awk -vextension="${EXT}" -vfiletype="${TYPE}" -vcompress="${COMP}" -vOFS="\t" '{print $0, extension, filetype, compress}' < ${EXT}.txt >> all.txt
find 명령에서 출력을 얻을 수 있습니다.
.fielename.gz Jason 197025960 May 2018
그러나 awk 명령에서 이 구문 오류가 발생합니다.
+ awk -vextension=gzip -vfiletype=gz -vcompress=compressed '-vOFS=\t' '{print $0, extension, filetype, compress}'
awk: {print $0, extension, filetype, compress}
awk: ^ syntax error
답변1
extension
변수 이름을 다른 것으로 바꾸 십시오 . 예 를 ext
들어 키워드/내장인 ;gawk
extension
$ gawk 'BEGIN{print extension}'
gawk: cmd. line:1: BEGIN{print extension}
gawk: cmd. line:1: ^ syntax error
$ gawk 'BEGIN{print ext}' # OK
^D
$ gawk -vextension=gzip 'BEGIN{print extension}'
gawk: fatal: cannot use gawk builtin `extension' as variable name