38 lines
940 B
Awk
38 lines
940 B
Awk
# syntax: GAWK -f EMPTY_DIRECTORY.AWK
|
|
BEGIN {
|
|
n = split("C:\\TEMP3,C:\\NOTHERE,C:\\AWK\\FILENAME,C:\\WINDOWS",arr,",")
|
|
for (i=1; i<=n; i++) {
|
|
printf("'%s' %s\n",arr[i],is_dir(arr[i]))
|
|
}
|
|
exit(0)
|
|
}
|
|
function is_dir(path, cmd,dots,entries,msg,rec,valid_dir) {
|
|
cmd = sprintf("DIR %s 2>NUL",path) # MS-Windows
|
|
while ((cmd | getline rec) > 0) {
|
|
if (rec ~ /[0-9]:[0-5][0-9]/) {
|
|
if (rec ~ / (\.|\.\.)$/) { # . or ..
|
|
dots++
|
|
continue
|
|
}
|
|
entries++
|
|
}
|
|
if (rec ~ / Dir\(s\) .* bytes free$/) {
|
|
valid_dir = 1
|
|
}
|
|
}
|
|
close(cmd)
|
|
if (valid_dir == 0) {
|
|
msg = "does not exist"
|
|
}
|
|
else if (valid_dir == 1 && entries == 0) {
|
|
msg = "is an empty directory"
|
|
}
|
|
else if (dots == 0 && entries == 1) {
|
|
msg = "is a file"
|
|
}
|
|
else {
|
|
msg = sprintf("is a directory with %d entries",entries)
|
|
}
|
|
return(msg)
|
|
}
|